Fonction RtlSelfRelativeToAbsoluteSD (ntifs.h)
La routine RtlSelfRelativeToAbsoluteSD crée un descripteur de sécurité au format absolu en utilisant un descripteur de sécurité au format auto-relatif comme modèle.
Syntaxe
NTSYSAPI NTSTATUS RtlSelfRelativeToAbsoluteSD(
[in] PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
[out] PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
[in, out] PULONG AbsoluteSecurityDescriptorSize,
[out] PACL Dacl,
[in, out] PULONG DaclSize,
[out] PACL Sacl,
[in, out] PULONG SaclSize,
[out] PSID Owner,
[in, out] PULONG OwnerSize,
[out] PSID PrimaryGroup,
[in, out] PULONG PrimaryGroupSize
);
Paramètres
[in] SelfRelativeSecurityDescriptor
Pointeur vers une mémoire tampon allouée à l’appelant qui contient une structure SECURITY_DESCRIPTOR au format auto-relatif. RtlSelfRelativeToAbsoluteSD crée une version de ce descripteur de sécurité au format absolu sans modifier l’original.
[out] AbsoluteSecurityDescriptor
Pointeur vers une mémoire tampon allouée à l’appelant qui reçoit le corps main d’un descripteur de sécurité au format absolu. Ces informations sont mises en forme en tant que structure SECURITY_DESCRIPTOR.
[in, out] AbsoluteSecurityDescriptorSize
Pointeur vers une variable allouée par l’appelant qui spécifie la taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre AbsoluteSecurityDescriptor . Si la mémoire tampon n’est pas suffisamment grande pour contenir le descripteur de sécurité, RtlSelfRelativeToAbsoluteSD retourne STATUS_BUFFER_TOO_SMALL et définit cette variable sur la taille minimale requise.
[out] Dacl
Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit le dacl du descripteur de sécurité au format absolu. Le corps main du descripteur de sécurité au format absolu fait référence à ce pointeur.
[in, out] DaclSize
Pointeur vers une variable allouée par l’appelant qui spécifie la taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre Dacl . Si la mémoire tampon n’est pas suffisamment grande pour contenir le DACL, RtlSelfRelativeToAbsoluteSD retourne STATUS_BUFFER_TOO_SMALL et définit cette variable sur la taille minimale requise.
[out] Sacl
Pointeur vers une mémoire tampon allouée à l’appelant qui reçoit la SACL du descripteur de sécurité au format absolu. Le corps main du descripteur de sécurité au format absolu fait référence à ce pointeur.
[in, out] SaclSize
Pointeur vers une variable allouée par l’appelant qui spécifie la taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre Sacl . Si la mémoire tampon n’est pas suffisamment grande pour contenir la SACL, RtlSelfRelativeToAbsoluteSD retourne STATUS_BUFFER_TOO_SMALL et définit cette variable sur la taille minimale requise.
[out] Owner
Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit le SID du propriétaire du descripteur de sécurité au format absolu. Le corps main du descripteur de sécurité au format absolu fait référence à ce pointeur.
[in, out] OwnerSize
Pointeur vers une variable allouée par l’appelant qui spécifie la taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre Owner . Si la mémoire tampon n’est pas suffisamment grande pour contenir le SID, RtlSelfRelativeToAbsoluteSD retourne STATUS_BUFFER_TOO_SMALL et définit cette variable sur la taille minimale requise.
[out] PrimaryGroup
Pointeur vers une mémoire tampon allouée à l’appelant qui reçoit le SID du groupe principal du descripteur de sécurité au format absolu. Le corps main du descripteur de sécurité au format absolu fait référence à ce pointeur.
[in, out] PrimaryGroupSize
Pointeur vers une variable allouée par l’appelant qui spécifie la taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre PrimaryGroup . Si la mémoire tampon n’est pas suffisamment grande pour contenir le SID, RtlSelfRelativeToAbsoluteSD retourne STATUS_BUFFER_TOO_SMALL et définit cette variable sur la taille minimale requise.
Valeur retournée
RtlSelfRelativeToAbsoluteSD retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée, par exemple :
Code de retour | Description |
---|---|
|
La mémoire tampon pointée par le paramètre AbsoluteSecurityDescriptor ne contenait pas de structure SECURITY_DESCRIPTOR au format absolu. STATUS_BAD_DESCRIPTOR_FORMAT est un code d’erreur. |
|
La mémoire tampon pointée par le paramètre AbsoluteSecurityDescriptor , Dacl, Sacl, Owner ou PrimaryGroup était trop petite. STATUS_BUFFER_TOO_SMALL est un code d’erreur. |
Remarques
Un descripteur de sécurité au format absolu contient des pointeurs vers les informations, au lieu de contenir les informations elles-mêmes. Un descripteur de sécurité au format auto-relatif contient les informations dans un bloc de mémoire contigu. Dans un descripteur de sécurité auto-relatif, une structure de SECURITY_DESCRIPTOR démarre toujours les informations, mais les autres composants du descripteur de sécurité peuvent suivre la structure SECURITY_DESCRIPTOR dans n’importe quel ordre. Au lieu d’utiliser des adresses mémoire, les composants du descripteur de sécurité sont identifiés par des décalages à partir du début du descripteur de sécurité. Ce format est utile lorsqu’un descripteur de sécurité doit être stocké sur une disquette ou transmis au moyen d’un protocole de communication.
Notez que le paramètre AbsoluteSecurityDescriptor reçoit uniquement le corps main du descripteur de sécurité absolu. L’intégralité du descripteur de sécurité absolue se compose de ce corps main, ainsi que de tous les composants de descripteur de sécurité retournés dans les mémoires tampons Dacl, Sacl, Owner et PrimaryGroup. Par conséquent, l’appelant ne peut pas libérer ces mémoires tampons après avoir appelé RtlSelfRelativeToAbsoluteSD, car cela invaliderait le descripteur de sécurité absolu.
Pour créer un descripteur de sécurité au format auto-relatif à l’aide d’un descripteur de sécurité au format absolu comme modèle, utilisez RtlAbsoluteToSelfRelativeSD.
Pour plus d’informations sur la sécurité et le contrôle d’accès, consultez la documentation Microsoft Windows SDK.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Server 2003 SP1 |
Plateforme cible | Universal |
En-tête | ntifs.h (include Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |