ZwSetInformationToken 関数 (ntifs.h)
ZwSetInformationToken ルーチンは、指定されたトークン内の情報を変更します。 呼び出し元プロセスには、情報を設定するための適切なアクセス権が必要です。
構文
NTSYSAPI NTSTATUS ZwSetInformationToken(
[in] HANDLE TokenHandle,
[in] TOKEN_INFORMATION_CLASS TokenInformationClass,
[in] PVOID TokenInformation,
[in] ULONG TokenInformationLength
);
パラメーター
[in] TokenHandle
情報を変更するアクセス トークンを処理します。
[in] TokenInformationClass
変更 する情報 の種類TOKEN_INFORMATION_CLASS識別する列挙型の値。 このパラメーターに指定できる値は、 TokenInformation パラメーターの説明に示されているテーブルの TokenInformationClass 値列に一覧表示されます。
[in] TokenInformation
トークンで変更する情報を含む呼び出し元から提供されるバッファーへのポインター。 このバッファー内の情報の構造は、次の表に示すように、 TokenInformationClass の値によって異なります。 すべての構造体は、32 ビット境界に配置する必要があります。
TokenInformationClass 値 | TokenInformation バッファーへの影響 |
---|---|
TokenDefaultDacl | バッファーには、新しく作成されたオブジェクトの既定の DACL を指定するTOKEN_DEFAULT_DACL構造体が含まれています。 この情報を設定するには、TOKEN_ADJUST_DEFAULTアクセスが必要です。 バッファーの内容は、構造的な正確性や一貫性については検証されません。 |
TokenGroups | 有効な情報クラスではありません。 この情報は読み取り専用です。 |
TokenOwner | バッファーには、新しく作成されたオブジェクトの既定の所有者 SID を指定するTOKEN_OWNER構造体が含まれています。 この情報を設定するには、TOKEN_ADJUST_DEFAULTアクセスが必要です。 指定できる所有者の値は、オブジェクトの所有者として割り当てることができることを示す属性を持つユーザー ID とグループ ID に制限されます。 |
TokenPrimaryGroup | バッファーには、新しく作成されたオブジェクトの既定のプライマリ グループ SID を指定するTOKEN_PRIMARY_GROUP構造体が含まれています。 この情報を設定するには、TOKEN_ADJUST_DEFAULTアクセスが必要です。 トークンに既に含まれているグループ ID のいずれかである必要があります。 |
TokenPrivileges | 有効な情報クラスではありません。 この情報は読み取り専用です。 |
TokenSource | 有効な情報クラスではありません。 この情報は読み取り専用です。 |
TokenStatistics | 有効な情報クラスではありません。 この情報は読み取り専用です。 |
TokenUser | 有効な情報クラスではありません。 この情報は読み取り専用です。 |
[in] TokenInformationLength
TokenInformation バッファーで渡される構造体のサイズ (バイト単位)。 次の表に示す最小値以上である必要があります。
TokenInformationClass 値 | Minimum TokenInformationLength |
---|---|
TokenDefaultDacl | sizeof(TOKEN_DEFAULT_DACL) |
TokenOwner | sizeof(TOKEN_OWNER) |
TokenPrimaryGroup | sizeof(TOKEN_PRIMARY_GROUP) |
戻り値
ZwSetInformationToken は 、STATUS_SUCCESSまたは適切なエラー状態を返します。 考えられるエラー状態コードは次のとおりです。
リターン コード | 説明 |
---|---|
STATUS_ACCESS_DENIED | TokenHandle に必要なアクセス権がありませんでした。 |
STATUS_ALLOTTED_SPACE_EXCEEDED | 既定の随意アクセス制御とプライマリ グループ ID のストレージ用に割り当てられた領域は、これらのフィールドの新しい値を受け入れるのに十分な大きさではありません。 |
STATUS_INFO_LENGTH_MISMATCH | TokenInformationLength の値が、必要な最小値より小さかった。 |
STATUS_INSUFFICIENT_RESOURCES | 指定された既定の所有者のセキュリティ情報をキャプチャできませんでした。 |
STATUS_INVALID_HANDLE | TokenHandle が有効なハンドルではありません。 |
STATUS_INVALID_INFO_CLASS | TokenInformationClass が有効なトークン情報クラスではありません。 |
STATUS_INVALID_OWNER | 呼び出し元は、指定した ID をオブジェクトの所有者 (または既定の所有者) に設定できません。 |
STATUS_INVALID_PRIMARY_GROUP | 呼び出し元は、指定した ID をオブジェクトのプライマリ グループに設定できません。 |
STATUS_INVALID_SID | 指定された既定の所有者のセキュリティ情報が無効でした。 |
STATUS_OBJECT_TYPE_MISMATCH | TokenHandle はトークン ハンドルではありません。 |
注釈
セキュリティとアクセス制御の詳細については、 ドライバー開発者向けの Windows セキュリティ モデル と、Windows SDK のこれらのトピックに関するドキュメントを参照してください。
注意
ZwSetInformationToken 関数の呼び出しがユーザー モードで行われる場合は、"ZwSetInformationToken" ではなく NtSetInformationToken という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
こちらもご覧ください
PsDereferenceImpersonationToken