NtOpenProcess 関数 (ntddk.h)
ZwOpenProcess ルーチンは、プロセス オブジェクトへのハンドルを開き、このオブジェクトへのアクセス権を設定します。
構文
__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcess(
[out] PHANDLE ProcessHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] PCLIENT_ID ClientId
);
パラメーター
[out] ProcessHandle
HANDLE 型の変数へのポインター。 ZwOpenProcess ルーチンは、このパラメーターが指す変数にプロセス ハンドルを書き込みます。
[in] DesiredAccess
呼び出し元がプロセス オブジェクトに対して要求したアクセス権を含むACCESS_MASK値。
[in] ObjectAttributes
プロセス オブジェクト ハンドルに適用する属性を指定する OBJECT_ATTRIBUTES 構造体へのポインター。 この構造体の ObjectName フィールドは NULL に設定する必要があります。 詳細については、次の 「解説 」セクションを参照してください。
[in, optional] ClientId
プロセスを開くスレッドを識別するクライアント ID へのポインター。 このパラメーターは、有効なクライアント ID への NULL 以外のポインターである必要があります。 詳細については、次の 「解説 」セクションを参照してください。
戻り値
呼び出しが成功した場合、ZwOpenProcess はSTATUS_SUCCESSを返します。 可能な戻り値には、次のエラー 状態コードが含まれます。
リターン コード | 説明 |
---|---|
STATUS_INVALID_PARAMETER_MIX | 呼び出し元がオブジェクト名を指定したか、クライアント ID を指定できませんでした。 |
STATUS_INVALID_CID | 指定されたクライアント ID が無効です。 |
STATUS_INVALID_PARAMETER | 要求されたアクセス権は、プロセス オブジェクトに対して無効です。 |
STATUS_ACCESS_DENIED | 要求されたアクセス権を付与できません。 |
注釈
ZwCreateKey や ZwCreateFile などの他のシステム サービス呼び出しによって開かれたカーネル ハンドルの場合と同様に、呼び出し元は ZwClose を呼び出して、不要になったときにハンドルを閉じる必要があります。
ClientId パラメーターは、プロセスを開くスレッドを識別するクライアント ID を指す必要があります。 さらに、ObjectAttributes が指す構造体の ObjectName フィールドを NULL に設定する必要があります。
この関数の呼び出しがユーザー モードで発生する場合は、"ZwOpenProcess" ではなく"NtOpenProcess" という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ntddk.h (Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDIs、PowerIrpDDis |