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 要求されたアクセス権を付与できません。

注釈

ZwCreateKeyZwCreateFile などの他のシステム サービス呼び出しによって開かれたカーネル ハンドルの場合と同様に、呼び出し元は 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

こちらもご覧ください

ACCESS_MASK

OBJECT_ATTRIBUTES

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