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 的非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”。

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

要求

要求 价值
目标平台 普遍
标头 ntddk.h (包括 Ntddk.h、 Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDIS(storport)PowerIrpDDis(wdm)

另请参阅

ACCESS_MASK

OBJECT_ATTRIBUTES

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