ZwOpenProcess 函数 (ntddk.h)

ZwOpenProcess 例程打开进程对象的句柄,并设置对此对象的访问权限。

语法

NTSYSAPI NTSTATUS ZwOpenProcess(
  [out]          PHANDLE            ProcessHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in]           POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional] PCLIENT_ID         ClientId
);

参数

[out] ProcessHandle

指向 HANDLE 类型的变量的指针。 ZwOpenProcess 例程将进程句柄写入此参数指向的变量。

[in] DesiredAccess

一个ACCESS_MASK值,该值包含调用方已请求对进程对象的访问权限。

[in] ObjectAttributes

指向 OBJECT_ATTRIBUTES 结构的指针,该结构指定要应用于进程对象句柄的属性。 此结构的 ObjectName 字段必须设置为 NULL。 有关更多信息,请参见下面的“备注”部分。

[in, optional] ClientId

指向客户端 ID 的指针,该客户端 ID 标识要打开其进程的线程。 此参数必须是指向有效客户端 ID 的非 NULL 指针。 有关更多信息,请参见下面的“备注”部分。

返回值

如果调用成功,ZwOpenProcess 将返回STATUS_SUCCESS。 可能的返回值包括以下错误状态代码。

返回代码 说明
STATUS_INVALID_PARAMETER_MIX 调用方提供了对象名称或未能提供客户端 ID。
STATUS_INVALID_CID 指定的客户端 ID 无效。
STATUS_INVALID_PARAMETER 请求的访问权限对进程对象无效。
STATUS_ACCESS_DENIED 无法授予请求的访问权限。

注解

ClientId 参数必须指向标识要打开其进程的线程的客户端 ID。 此外,ObjectAttributes 指向的结构的 ObjectName 字段必须设置为 NULL

如果在用户模式下调用此函数,则应使用名称“NtOpenProcess”而不是“ZwOpenProcess”。

对于来自内核模式驱动程序的调用,Windows Native System Services 例程的 NtXxxZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxxZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本

要求

要求
目标平台 通用
标头 ntddk.h (包括 Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) PowerIrpDDis (wdm)

另请参阅

ACCESS_MASK

OBJECT_ATTRIBUTES

使用本机系统服务例程的 Nt 和 Zw 版本