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 バージョンの使用 を参照してください。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
ヘッダー | ntddk.h (Ntddk.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 を する | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |