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 値列に一覧表示されます。

[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)

戻り値

NtSetInformationToken は 、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 のこれらのトピックに関するドキュメントを参照してください。

注意

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

カーネル モード ドライバーからの呼び出しの場合、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 コンプライアンス規則 HwStorPortProhibitedDIs、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 バージョンのネイティブ システム サービス ルーチンの使用