ZwOpenProcessTokenEx 関数 (ntifs.h)
ZwOpenProcessTokenEx ルーチンは、プロセスに関連付けられているアクセス トークンを開きます。
構文
NTSYSAPI NTSTATUS ZwOpenProcessTokenEx(
[in] HANDLE ProcessHandle,
[in] ACCESS_MASK DesiredAccess,
[in] ULONG HandleAttributes,
[out] PHANDLE TokenHandle
);
パラメーター
[in] ProcessHandle
アクセス トークンを開くプロセスを処理します。 ハンドルにはPROCESS_QUERY_INFORMATIONアクセス権が必要です。 Ntddk.h で定義されている NtCurrentProcess マクロを使用して、現在のプロセスを指定します。
[in] DesiredAccess
ACCESS_MASK アクセス トークンへのアクセスの要求された種類を指定する構造体です。 これらの要求されたアクセスの種類は、トークンの随意アクセス制御リスト (DACL) と比較して、許可または拒否されるアクセスを決定します。
[in] HandleAttributes
アクセス トークン ハンドルの属性。 現在、OBJ_KERNEL_HANDLEのみがサポートされています。 呼び出し元がシステム プロセス コンテキストで実行されていない場合は、このパラメーターにOBJ_KERNEL_HANDLEを指定する必要があります。
[out] TokenHandle
新しく開かれたアクセス トークンへのハンドルを受け取る呼び出し元によって割り当てられた変数へのポインター。
戻り値
ZwOpenProcessTokenEx は、STATUS_SUCCESSまたは適切なエラー状態を返します。 考えられるエラー状態コードは次のとおりです。
リターン コード | 説明 |
---|---|
STATUS_ACCESS_DENIED | ProcessHandle にPROCESS_QUERY_INFORMATIONアクセスできませんでした。 |
STATUS_INSUFFICIENT_RESOURCES | 新しいトークン ハンドルを割り当てませんでした。 |
STATUS_INVALID_HANDLE | ProcessHandle が有効なハンドルではありません。 |
STATUS_INVALID_PARAMETER | 指定された HandleAttributes に OBJ_KERNEL_HANDLEが含まれていませんでした。 |
STATUS_OBJECT_TYPE_MISMATCH | ProcessHandle はプロセス ハンドルではありません。 |
STATUS_PRIVILEGE_NOT_HELD | 呼び出し元には、 DesiredAccess パラメーターで指定されたアクセス権を持つトークン ハンドルを作成するために必要な特権 (SeSecurityPrivilege) がありません。 |
STATUS_QUOTA_EXCEEDED | プロセスのメモリ クォータでは、トークン ハンドルを割り当てるのに十分ではありません。 |
STATUS_UNSUCCESSFUL | トークン ハンドルを作成できませんでした。 |
注釈
ZwOpenProcessTokenEx は、プロセスに関連付けられているアクセス トークンを開き、そのトークンのハンドルを返します。
ZwOpenProcessTokenEx を呼び出して取得したハンドルは、最終的に ZwClose を呼び出して解放する必要があります。
システム プロセス以外のプロセス コンテキストで実行されるドライバー ルーチンは、ZwOpenProcessTokenEx の HandleAttributes パラメーターのOBJ_KERNEL_HANDLE属性を設定する必要があります。 これにより、 ZwOpenProcessTokenEx によって返されるハンドルの使用が、カーネル モードで実行されているプロセスに制限されます。 それ以外の場合は、ドライバーが実行されているコンテキスト内のプロセスによってハンドルにアクセスできます。
セキュリティとアクセス制御の詳細については、 ドライバー開発者向けの Windows セキュリティ モデル と、Windows SDK のこれらのトピックに関するドキュメントを参照してください。
注意
ZwOpenProcessTokenEx 関数の呼び出しがユーザー モードで発生した場合は、"ZwOpenProcessTokenEx" ではなく"NtOpenProcessTokenEx" という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |