ZwOpenFile [WDK翻译]

ZwOpenFile

ZwOpenFile 例程打开一个已经存在的file, directory, device, or volume.

Syntax

C++ 

 

NTSTATUS ZwOpenFile(

  _Out_ PHANDLE            FileHandle,

  _In_  ACCESS_MASK        DesiredAccess,

  _In_  POBJECT_ATTRIBUTES ObjectAttributes,

  _Out_ PIO_STATUS_BLOCK   IoStatusBlock,

  _In_  ULONG              ShareAccess,

  _In_  ULONG              OpenOptions

);

Parameters

FileHandle [out] 

指向一个HANDLE 的指针,用于保存打开的句柄。

DesiredAccess [in] 

指定一个 ACCESS_MASK 值,希望打开目标后的访问方式。更多信息见  ZwCreateFile 的DesiredAccess参数。

ObjectAttributes [in] 

OBJECT_ATTRIBUTES 结构体指针,指定对象名和其他的属性,使用例程InitializeObjectAttributes 初始化这个结构体. 如果调用者不在一个系统线程的上下文中, 当调用InitializeObjectAttributes时必须设置结构体的OBJ_KERNEL_HANDLE 属性

IoStatusBlock [out] 

一个IO_STATUS_BLOCK 的指针用于存放完成后的状态和操作的相关信息。 

ShareAccess [in] 

文件的共享访问设定. 更多信息见ZwCreateFile的ShareAccess参数。

OpenOptions [in] 

打开文件时应用的选项,更多信息见ZwCreateFile的CreateOptions参数。

Return value

ZwOpenFile 返回 STATUS_SUCCESS 或者一个合适的NTSTATUS error code. 在返回error code的情况下, 调用者可以通过检查IoStatusBlock 参数来获取更多失败信息。

Remarks

ZwOpenFile 提供了一个句柄,通过它可以操作一个文件的数据或者是文件状态,或是文件的属性。ZwOpenFile 提供了ZwCreateFile的一个功能子集(ZwCreateFile能做更多事). 详见文章: Using Files in a Driver.

一旦不在使用此文件, 驱动必须调用 ZwClose 关闭它。

如果调用者不在系统线程的上下文中。必须保证它创建的句柄时私有的。否则这个句柄能被所有调用该驱动功能的进程使用。详见文章:Object Handles

Callers of ZwOpenFile must be running at IRQL = PASSIVE_LEVEL and with special kernel APCs enabled.

Note  如在用户模式下使用,用 "NtOpenFile" 代替"ZwOpenFile".

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值