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
Utilisation des versions Nt et Zw des routines des services système natifs