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 |
0x10000000 |
所有可能访问的权限 |
| FILE_ACCESS_NULL |
0xC0000000 |
标准访问权限 |
| FILE_ACCESS_READ |
0x80000000 |
读文件权限 |
| FILE_ACCESS_WRITE |
0x40000000 |
写文件权限 |
- 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
- 使用 CreateFile function 所得到的文件句柄应在不再需要时使用 CloseFile function 将其关闭,否则将会导致句柄泄漏
- 在当前用户扩展进程退出时系统会自动关闭所有未关闭的文件句柄,但这种方式是不符合开发标准的,开发者应绝对避免文件句柄泄漏
- CreateFile function 支持对文件、设备对象、内核对象的访问,灵活度较高
- CreateFile function 可能会被其他内核扩展挂接内核通知,以实现多用途
Requirements:
| Keyword |
Value |
| Minimum Agine Version |
171012.1 |
| Minimum SDK Version |
171012.1 |
| Header File |
h.files |
| Library Server |
kext |