发现一代码里面这样调用:
CreateFileW(NUL, // 文件名
GENERIC_READ | GENERIC_WRITE, // 访问方式
FILE_SHARE_READ, // 共享方式
0x0013FC3C, // 安全环境
CREATE_ALWAYS, // 创建方式
0x80, // 属性
00000000 // 模板
) = 0x000000A0; // 返回的句柄请问,这是一种什么样的用法?
CreateFileW(NUL, // 文件名
GENERIC_READ | GENERIC_WRITE, // 访问方式
FILE_SHARE_READ, // 共享方式
0x0013FC3C, // 安全环境
CREATE_ALWAYS, // 创建方式
0x80, // 属性
00000000 // 模板
) = 0x000000A0; // 返回的句柄请问,这是一种什么样的用法?
typedef struct _SYSTEM_HANDLE_INFORMATION {
ULONG ProcessId;
UCHAR ObjectTypeNumber;
UCHAR Flags;
USHORT Handle;
PVOID Object;
ACCESS_MASK GrantedAccess;
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
ObjectTypeNumber定义了句柄所属对像的类型,文件的ObjectType对不同的操作系统是不同的,所以需要先找到当前操作系统所定义的 ObjectType值,这样才能在枚举出的众多句柄信息中找到哪些是文件句柄信息。通用的方法是CreateFile打开空设备NUL,记下它的句 柄,用来比较。