Fonction ZwSetInformationToken (ntifs.h)

La routine ZwSetInformationToken modifie les informations dans un jeton spécifié. Le processus d’appel doit disposer des droits d’accès appropriés pour définir les informations.

Syntaxe

NTSYSAPI NTSTATUS ZwSetInformationToken(
  [in] HANDLE                  TokenHandle,
  [in] TOKEN_INFORMATION_CLASS TokenInformationClass,
  [in] PVOID                   TokenInformation,
  [in] ULONG                   TokenInformationLength
);

Paramètres

[in] TokenHandle

Handle pour un jeton d’accès dans lequel les informations doivent être modifiées.

[in] TokenInformationClass

Valeur du TOKEN_INFORMATION_CLASS type énuméré identifiant le type d’informations à modifier. Les valeurs possibles pour ce paramètre sont répertoriées dans la colonne Valeur TokenInformationClass de la table indiquée dans la description du paramètre TokenInformation .

[in] TokenInformation

Pointeur vers une mémoire tampon fournie par l’appelant contenant les informations à modifier dans le jeton. La structure des informations contenues dans cette mémoire tampon dépend de la valeur de TokenInformationClass, comme indiqué dans le tableau suivant. Toutes les structures doivent être alignées sur une limite 32 bits.

Valeur TokenInformationClass Effet sur la mémoire tampon TokenInformation
TokenDefaultDacl La mémoire tampon contient une structure de TOKEN_DEFAULT_DACL spécifiant la liste DACL par défaut pour les objets nouvellement créés. TOKEN_ADJUST_DEFAULT accès est requis pour définir ces informations. Le contenu de la mémoire tampon n’est pas validé pour l’exactitude structurelle ou la cohérence.
TokenGroups Pas une classe d’informations valide. Ces informations sont en lecture seule.
TokenOwner La mémoire tampon contient une structure TOKEN_OWNER spécifiant le SID propriétaire par défaut pour les objets nouvellement créés . TOKEN_ADJUST_DEFAULT accès est requis pour définir ces informations. Les valeurs de propriétaire qui peuvent être spécifiées sont limitées aux ID d’utilisateur et de groupe avec un attribut indiquant qu’elles peuvent être affectées en tant que propriétaire des objets.
TokenPrimaryGroup La mémoire tampon contient une structure TOKEN_PRIMARY_GROUP spécifiant le SID du groupe principal par défaut pour les objets nouvellement créés. TOKEN_ADJUST_DEFAULT accès est requis pour définir ces informations. Doit être l’un des ID de groupe déjà dans le jeton.
TokenPrivileges Pas une classe d’informations valide. Ces informations sont en lecture seule.
TokenSource Pas une classe d’informations valide. Ces informations sont en lecture seule.
TokenStatistics Pas une classe d’informations valide. Ces informations sont en lecture seule.
TokenUser Pas une classe d’informations valide. Ces informations sont en lecture seule.

[in] TokenInformationLength

Taille, en octets, de la structure passée dans la mémoire tampon TokenInformation . Doit être supérieur ou égal à la valeur minimale indiquée dans le tableau suivant.

Valeur TokenInformationClass Minimum TokenInformationLength
TokenDefaultDacl sizeof(TOKEN_DEFAULT_DACL)
TokenOwner sizeof(TOKEN_OWNER)
TokenPrimaryGroup sizeof(TOKEN_PRIMARY_GROUP)

Valeur retournée

ZwSetInformationToken retourne STATUS_SUCCESS ou une status d’erreur appropriée. Les codes de status d’erreur possibles incluent les éléments suivants :

Code de retour Description
STATUS_ACCESS_DENIED TokenHandle n’avait pas l’accès requis.
STATUS_ALLOTTED_SPACE_EXCEEDED L’espace alloué pour le stockage du contrôle d’accès discrétionnaire par défaut et de l’ID de groupe principal n’est pas assez grand pour accepter la nouvelle valeur de l’un de ces champs.
STATUS_INFO_LENGTH_MISMATCH La valeur de TokenInformationLength était inférieure au minimum requis.
STATUS_INSUFFICIENT_RESOURCES Les informations de sécurité du propriétaire par défaut spécifiées n’ont pas pu être capturées.
STATUS_INVALID_HANDLE TokenHandle n’était pas un handle valide.
STATUS_INVALID_INFO_CLASS TokenInformationClass n’était pas une classe d’informations de jeton valide.
STATUS_INVALID_OWNER L’appelant ne peut pas définir l’ID spécifié comme propriétaire (ou propriétaire par défaut) d’un objet.
STATUS_INVALID_PRIMARY_GROUP L’appelant ne peut pas définir l’ID spécifié comme étant le groupe principal d’un objet.
STATUS_INVALID_SID Les informations de sécurité du propriétaire par défaut spécifiées n’étaient pas valides.
STATUS_OBJECT_TYPE_MISMATCH TokenHandle n’était pas un handle de jeton.

Remarques

Pour plus d’informations sur la sécurité et le contrôle d’accès, consultez Modèle de sécurité Windows pour les développeurs de pilotes et la documentation sur ces rubriques dans le Kit de développement logiciel (SDK) Windows.

Notes

Si l’appel à la fonction ZwSetInformationToken se produit en mode utilisateur, vous devez utiliser le nom NtSetInformationToken » au lieu de « ZwSetInformationToken ».

Pour les appels à partir de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment dans la façon dont elles gèrent et interprètent les paramètres d’entrée. Pour plus d’informations sur la relation entre les versions NtXxx et ZwXxx d’une routine, consultez Utilisation des versions Nt et Zw des routines des services système natifs.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7
Plateforme cible Universal
En-tête ntifs.h (inclure Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Voir aussi

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

Utilisation des versions Nt et Zw des routines des services système natifs

ZwQueryInformationToken