ZwTerminateProcess 函数 (ntddk.h)
ZwTerminateProcess 例程终止进程及其所有线程。
语法
NTSYSAPI NTSTATUS ZwTerminateProcess(
[in, optional] HANDLE ProcessHandle,
[in] NTSTATUS ExitStatus
);
参数
[in, optional] ProcessHandle
表示要终止的进程的进程对象的句柄。
[in] ExitStatus
一个 NTSTATUS 值,操作系统使用该值作为进程及其每个线程的最终状态。
返回值
如果操作成功,ZwTerminateProcess 将返回STATUS_SUCCESS。 其他返回值包括:
返回代码 | 说明 |
---|---|
STATUS_OBJECT_TYPE_MISMATCH | 指定的句柄不是进程句柄。 |
STATUS_INVALID_HANDLE | 指定的句柄无效。 |
STATUS_ACCESS_DENIED | 驱动程序无法访问指定的进程对象。 |
STATUS_PROCESS_IS_TERMINATING | 指定的进程已终止。 |
如果调用方在 ProcessHandle 参数中指定当前进程, 则 ZwTerminateProcess 不返回。
注解
若要获取驱动程序可以为 ProcessHandle 参数指定的进程句柄,驱动程序可以调用 ZwOpenProcess。 句柄必须是 内核句柄,该句柄只能在内核模式下访问。 句柄是使用 OBJ_KERNEL_HANDLE 标志创建的内核句柄。 有关详细信息,请参阅 InitializeObjectAttributes。
如果尚未从内核堆栈中释放资源,驱动程序不得指定当前进程,因为操作系统不会展开调用线程的内核堆栈。
如果在用户模式下调用此函数,则应使用名称“NtTerminateProcess”而不是“ZwTerminateProcess”。
对于来自内核模式驱动程序的调用,Windows Native System Services 例程的 NtXxx 和 ZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxx 和 ZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | ntddk.h (包括 Ntddk.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI (storport) , PowerIrpDDis (wdm) |