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」を参照してください。
オペレーティング システムが呼び出し元スレッドのカーネル スタックをアンワインドしないため、リソースがカーネル スタックから解放されていない場合、ドライバーは現在のプロセスを指定しないでください。
この関数の呼び出しがユーザー モードで行われる場合は、"ZwTerminateProcess" ではなく "NtTerminateProcess" という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx バージョンと ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンの使用」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ntddk.h (Ntddk.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |