Partager via


Fonction NtSetInformationToken (ntifs.h)

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

Syntaxe

__kernel_entry NTSYSCALLAPI NTSTATUS NtSetInformationToken(
  [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 TokenInformationClass Value 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 de 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 TOKEN_DEFAULT_DACL spécifiant la liste DACL par défaut pour les objets nouvellement créés. TOKEN_ADJUST_DEFAULT accès est nécessaire 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 Classe d’informations non valide. Ces informations sont en lecture seule.
TokenOwner La mémoire tampon contient une structure TOKEN_OWNER spécifiant le SID de propriétaire par défaut pour les objets nouvellement créés . TOKEN_ADJUST_DEFAULT accès est nécessaire 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 de groupe principal par défaut pour les objets nouvellement créés . TOKEN_ADJUST_DEFAULT accès est nécessaire pour définir ces informations. Doit être l’un des ID de groupe déjà présents dans le jeton.
TokenPrivileges Classe d’informations non valide. Ces informations sont en lecture seule.
TokenSource Classe d’informations non valide. Ces informations sont en lecture seule.
TokenStatistics Classe d’informations non valide. Ces informations sont en lecture seule.
TokenUser Classe d’informations non 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

NtSetInformationToken retourne STATUS_SUCCESS ou une status d’erreur appropriée. Les codes status d’erreur possibles sont les 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 à la valeur minimale requise.
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 NtSetInformationToken se produit en mode noyau, vous devez utiliser le nom « ZwSetInformationToken » au lieu de « NtSetInformationToken ».

Pour les appels provenant 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 Using Nt and Zw Versions of the Native System Services Routines.

Configuration requise

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

Voir aussi

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

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