CreateFile function

打开或创建一个文件、设备对象、内核对象


Function:

int UAPI CreateFile(
        LPCSTR lpcFile,
        dword dwCreationDisposition,
        dword dwObjectFlags,
        dword dwDesiredAccess,
        dword dwShareMode,
        dword dwFlagsAndAttributes
);

Parameters:

  • lpcFile [in]:文件或设备路径
  • dwCreationDisposition [in]:文件创建标志,如为 NULL 则取用默认标志 FILE_OPEN_EXIS
Constant Value Notes
FILE_CREATE_ALL 0x02 始终创建一个新文件,已存在则覆盖
FILE_CREATE_NEW 0x01 创建一个新文件,已存在则函数失败
FILE_OPEN_ALL 0x04 始终打开一个文件,不存在则创建一个新文件
FILE_OPEN_EXIS 0x03 打开文件或设备,不存在则函数失败
FILE_TRUNCATE_EXIST 0x05 打开并截断文件,使其大小为0,不存在则函数失败
  • dwObjectFlags [in]:文件对象标志,可以为 NULL
Constant Value Notes
FILE_FLAG_TEMP 0x01 临时文件,关闭时则自动删除此文件
  • dwDesiredAccess [in]:文件访问权限标志,如为 NULL 则取用默认标志 FILE_ACCESS_NULL
Constant Value Notes
FILE_ACCESS_ALL 0x‭10000000‬ 所有可能访问的权限
FILE_ACCESS_NULL 0x‭C0000000‬ 标准访问权限
FILE_ACCESS_READ 0x‭80000000‬ 读文件权限
FILE_ACCESS_WRITE 0x‭40000000‬ 写文件权限
  • dwShareMode [in]:文件共享权限标志,如为 NULL 则取用默认标志 FILE_SHARE_READ FILE_SHARE_WRITE
Constant Value Notes
FILE_SHARE_NULL 0x00 独占文件
FILE_SHARE_DELETE 0x04 允许其他进程删除文件
FILE_SHARE_READ 0x01 允许其他进程读文件
FILE_SHARE_WRITE 0x02 允许其他进程写文件
  • dwFlagsAndAttributes [in]:文件属性标志,如为 NULL 则取用默认标志 FILE_ATTR_ARCHIVE

Notes:文件属性标志应参考 Const FileAttr 常量类型

Return value:

  • Type:int
  • Text:成功返回文件句柄,失败返回 NULL

Remarks:

  1. 使用 CreateFile function 所得到的文件句柄应在不再需要时使用 CloseFile function 将其关闭,否则将会导致句柄泄漏
  2. 在当前用户扩展进程退出时系统会自动关闭所有未关闭的文件句柄,但这种方式是不符合开发标准的,开发者应绝对避免文件句柄泄漏
  3. CreateFile function 支持对文件、设备对象、内核对象的访问,灵活度较高
  4. CreateFile function 可能会被其他内核扩展挂接内核通知,以实现多用途

Requirements:

Keyword Value
Minimum Agine Version 171012.1
Minimum SDK Version 171012.1
Header File h.files
Library Server kext

results matching ""

    No results matching ""