ZwQueryInformationToken 関数 (ntifs.h)
ZwQueryInformationToken ルーチンは、アクセス トークンに関する指定された種類の情報を取得します。 呼び出し元プロセスには、情報を取得するための適切なアクセス権が必要です。
構文
NTSYSAPI NTSTATUS ZwQueryInformationToken(
[in] HANDLE TokenHandle,
[in] TOKEN_INFORMATION_CLASS TokenInformationClass,
[out] PVOID TokenInformation,
[in] ULONG TokenInformationLength,
[out] PULONG ReturnLength
);
パラメーター
[in] TokenHandle
情報の取得元となるアクセス トークンのハンドル。
[in] TokenInformationClass
取得する情報の種類を識別する TOKEN_INFORMATION_CLASS 列挙型の値。 このパラメーターに指定できる値は、TokenInformation パラメーターの説明に示されているテーブルの TokenInformationClass Value 列に表示されます。
[out] TokenInformation
トークンに関する要求された情報を受け取る呼び出し元によって割り当てられたバッファーへのポインター。 このバッファーに格納される構造体は、次の表に示すように、TokenInformationClassの値に依存します。 すべての構造体は、32 ビット境界に配置する必要があります。
TokenInformationClass 値 | TokenInformation バッファーへの影響 |
---|---|
TokenDefaultDacl | バッファーは、新しく作成されたオブジェクトの既定の DACL を含む TOKEN_DEFAULT_DACL 構造体を受け取ります。 |
TokenGroups | バッファーは、トークンに関連付けられているグループ アカウントを含む TOKEN_GROUPS 構造体を受け取ります。 |
TokenImpersonationLevel | バッファーは、トークンの偽装レベルを示す SECURITY_IMPERSONATION_LEVEL 値を受け取ります。 アクセス トークンが偽装トークンでない場合、ZwQueryInformationToken の呼び出しは失敗します。 |
TokenOwner | バッファーは、新しく作成されたオブジェクトの既定の所有者 SID を含む TOKEN_OWNER 構造体を受け取ります。 |
TokenPrimaryGroup | バッファーは、新しく作成されたオブジェクトの既定のプライマリ グループ SID を含む TOKEN_PRIMARY_GROUP 構造体を受け取ります。 |
TokenPrivileges | バッファーは、トークンの特権を含む TOKEN_PRIVILEGES 構造体を受け取ります。 |
TokenSessionId | バッファーは、トークンに関連付けられているターミナル サービス セッション識別子を指定する 32 ビット値を受け取ります。 トークンがターミナル サーバー コンソール セッションに関連付けられている場合、セッション識別子は 0 です。 0 以外のセッション識別子は、ターミナル サービス クライアント セッションを示します。 ターミナル サービス以外の環境では、セッション識別子は 0 です。 |
TokenSource | バッファーは、トークンのソースを含む TOKEN_SOURCE 構造体を受け取ります。 この情報を取得するには、TOKEN_QUERY_SOURCEアクセスが必要です。 |
TokenStatistics | バッファーは、さまざまなトークン統計を含む TOKEN_STATISTICS 構造体を受け取ります。 |
TokenType | バッファーは、トークンがプライマリ トークンか偽装トークンかを示す TOKEN_TYPE 値を受け取ります。 |
TokenUser | バッファーは、トークンのユーザー アカウントを含む TOKEN_USER 構造体を受け取ります。 |
[in] TokenInformationLength
呼び出し元によって割り当てられた TokenInformation バッファーの長さ (バイト単位)。
[out] ReturnLength
TokenInformation バッファーで返される情報の実際の長さをバイト単位で受け取る呼び出し元によって割り当てられた変数へのポインター。 次のいずれかの条件に該当する場合、TokenInformation バッファーにデータは返されません。
要求されたトークン情報構造体のサイズが、TokenInformationLength
より大きい。 この場合、ReturnLength は、要求された情報を格納するために必要な実際のバイト数を受け取ります。 TokenInformationClass の値は TokenDefaultDaclであり、トークンの既定の DACL は確立されていません。 この場合、ReturnLength は 0 を受け取ります。
戻り値
ZwQueryInformationToken は、STATUS_SUCCESSまたは適切なエラー状態を返します。 考えられるエラー状態コードは次のとおりです。
リターン コード | 形容 |
---|---|
STATUS_ACCESS_DENIED | TokenHandle に必要なアクセス権がありませんでした。 |
STATUS_BUFFER_TOO_SMALL | 要求されたトークン情報構造体のサイズが、TokenInformationLength |
STATUS_INVALID_HANDLE | TokenHandle は有効なハンドルではありません。 |
STATUS_INVALID_INFO_CLASS | TokenInformationClass が有効なトークン情報クラスではありません。 |
STATUS_OBJECT_TYPE_MISMATCH | TokenHandle はトークン ハンドルではありません。 |
備考
ZwQueryInformationToken ルーチンは、ファイル システムまたはファイル システム フィルター ドライバーを使用して、IRP_MJ_CREATE 処理中に要求を開始した呼び出し元の SID を決定できます。 ZwQueryInformationTokenに渡される
セキュリティとアクセス制御の詳細については、ドライバー開発者向けの Windows セキュリティ モデルの と、Windows SDK のこれらのトピックに関するドキュメントを参照してください。
手記
ZwQueryInformationToken 関数の呼び出しがユーザー モードで発生する場合は、"ZwQueryInformationToken" ではなく、"NtQueryInformationToken" という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx と ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt および Zw バージョンの使用 を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP |
ターゲット プラットフォーム の |
万国 |
ヘッダー | ntifs.h (Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 を |
HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
関連項目
SID の