发现一代码里面这样调用:
CreateFileW(NUL,   // 文件名
            GENERIC_READ | GENERIC_WRITE, // 访问方式
            FILE_SHARE_READ, // 共享方式
            0x0013FC3C, // 安全环境
            CREATE_ALWAYS, // 创建方式
            0x80, // 属性
            00000000 // 模板
            ) = 0x000000A0;  // 返回的句柄请问,这是一种什么样的用法?

解决方案 »

  1.   

    CreateFile有文件名是COM1的,有是文件名的,没见过NUL的。
      

  2.   

    试图解除独占文件的锁定时,首先需要先来使用ZwQuerySystemInformation函数枚举系统中打开的所有文件的句柄,枚举出的信息将包含如下结构:
    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,记下它的句 柄,用来比较。