次の方法で共有


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 バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxxZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt および Zw バージョンの使用 を参照してください。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー ntddk.h (Ntddk.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

関連項目

ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンを使用した

ZwOpenProcess