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”。
对于内核模式驱动程序的调用,NtXxx 和 ZwXxx 版本的 Windows 本机系统服务例程的行为方式可能以不同的方式处理和解释输入参数。 有关 NtXxx 与 ZwXxx 例程之间的关系的详细信息,请参阅 使用 Nt 和 Zw 版本的本机系统服务例程。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | ntddk.h (包括 Ntddk.h、 Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDIS(storport),PowerIrpDDis(wdm) |