次の方法で共有


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)

こちらもご覧ください

Nt および Zw バージョンのネイティブ システム サービス ルーチンの使用

ZwOpenProcess