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 例程的 NtXxx 和 ZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxx 和 ZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | ntddk.h (包括 Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI (storport) , PowerIrpDDis (wdm) |