
简介
NtCreateFile 是 Windows NT 内核模式中用于创建文件对象的系统调用。它是 CreateFile 函数的用户模式等效项。NtCreateFile 用于创建、打开或截断文件、目录或其他对象。
原型
NTSTATUS NtCreateFile(OUT PHANDLE FileHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes,OUT PIO_STATUS_BLOCK IoStatusBlock,IN PLARGE_INTEGER AllocationSize OPTIONAL,IN ULONG FileAttributes,IN ULONG ShareAccess,IN ULONG CreateDisposition,IN ULONG CreateOptions,IN PVOID EaBuffer OPTIONAL,IN ULONG EaLength
);
参数
- FileHandle: 创建文件的句柄。
- DesiredAccess: 对文件的请求访问权限。
- ObjectAttributes: 指向 OBJECT_ATTRIBUTES 结构的指针,包含要创建的对象的名称和安全描述符。
- IoStatusBlock: 指向 IO_STATUS_BLOCK 结构的指针,用于接收操作的状态。
- AllocationSize: 可选的 LARGE_INTEGER 结构,指定要为文件分配的初始大小。
- FileAttributes: 文件的属性标志。
- ShareAccess: 指定其他进程可以访问文件的权限。
- CreateDisposition: 指定如何处理现有文件。
- CreateOptions: 指定其他创建选项。
- EaBuffer: 可选的缓冲区,指向扩展属性数据。
- EaLength: EaBuffer 的长度。
返回值
NtCreateFile 返回一个 NTSTATUS 值,表示操作的状态。成功时,返回值为 STATUS_SUCCESS。
与 CreateFile 的比较
NtCreateFile 是 CreateFile 函数的用户模式等效项。它比 CreateFile 具有更多功能,包括:
- 指定文件属性的选项。
- 使用扩展属性的选项。
- 在不同文件系统上工作的选项。
一般情况下,使用 CreateFile 函数创建文件就足够了。但是,如果需要更高级的功能,则可以使用 NtCreateFile。
使用示例
include NTSTATUS CreateFile(PWCHAR FileName,ACCESS_MASK DesiredAccess,OBJECT_ATTRIBUTES ObjectAttributes,PIO_STATUS_BLOCK IoStatusBlock
) {return NtCreateFile(&FileHandle,DesiredAccess,&ObjectAttributes,IoStatusBlock,NULL,FILE_ATTRIBUTE_NORMAL,FILE_SHARE_READ | FILE_SHARE_WRITE,FILE_OVERWRITE_IF,FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT,NULL,0);
}
相关函数
- CreateFile
- OpenFile
参考资料
© 版权声明
文章版权归作者所有,未经允许请勿转载。










