NtSetInformationToken 関数 (ntifs.h)

NtSetInformationToken ルーチンは、指定されたトークン内の情報を変更します。 呼び出し元プロセスには、情報を設定するための適切なアクセス権が必要です。

構文

__kernel_entry NTSYSCALLAPI NTSTATUS NtSetInformationToken(
  [in] HANDLE                  TokenHandle,
  [in] TOKEN_INFORMATION_CLASS TokenInformationClass,
  [in] PVOID                   TokenInformation,
  [in] ULONG                   TokenInformationLength
);

パラメーター

[in] TokenHandle

情報を変更するアクセス トークンのハンドル。

[in] TokenInformationClass

変更する情報の種類を識別する TOKEN_INFORMATION_CLASS 列挙型の値。 このパラメーターで使用できる値は、 TokenInformation パラメーターの説明に示されているテーブルの TokenInformationClass Value 列に一覧表示されます。

[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 値 最小 TokenInformationLength
TokenDefaultDacl sizeof(TOKEN_DEFAULT_DACL)
TokenOwner sizeof(TOKEN_OWNER)
TokenPrimaryGroup sizeof(TOKEN_PRIMARY_GROUP)

戻り値

NtSetInformationToken は 、STATUS_SUCCESSまたは適切なエラー状態を返します。 考えられるエラー状態コードは次のとおりです。

リターン コード 説明
STATUS_ACCESS_DENIED TokenHandle に必要なアクセス権がありませんでした。
STATUS_ALLOTTED_SPACE_EXCEEDED 既定の随意アクセス制御とプライマリ グループ ID の格納用に割り当てられた領域は、これらのフィールドの 1 つの新しい値を受け入れるのに十分な大きさではありません。
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 SDK のこれらのトピックに関するドキュメントを参照してください。

注意

カーネル モードで NtSetInformationToken 関数の呼び出しが発生した場合は、"NtSetInformationToken" ではなく "ZwSetInformationToken" という名前を使用する必要があります。

カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx バージョンと ZwXxx バージョンは、入力パラメーターを処理して解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx バージョンと ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンの使用」を参照してください。

要件

   
サポートされている最小のクライアント Windows 7
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs、PowerIrpDDis

関連項目

NtQueryInformationToken

PsDereferenceImpersonationToken

PsDereferencePrimaryToken

SECURITY_IMPERSONATION_LEVEL

SID

SeQueryAuthenticationIdToken

SeQuerySubjectContextToken

SeTokenIsAdmin

SeTokenIsRestricted

TOKEN_DEFAULT_DACL

TOKEN_GROUPS

TOKEN_INFORMATION_CLASS

TOKEN_OWNER

TOKEN_PRIMARY_GROUP

TOKEN_PRIVILEGES

TOKEN_SOURCE

TOKEN_STATISTICS

TOKEN_TYPE

TOKEN_USER

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