Partager via


Fonction AccessCheckByTypeResultList (securitybaseapi.h)

La fonction AccessCheckByTypeResultList détermine si un descripteur de sécurité accorde un ensemble spécifié de droits d’accès au client identifié par un jeton d’accès. La fonction peut case activée l’accès du client à une hiérarchie d’objets, comme un objet, ses jeux de propriétés et ses propriétés. La fonction signale les droits d’accès accordés ou refusés à chaque type d’objet dans la hiérarchie. En règle générale, les applications serveur utilisent cette fonction pour case activée l’accès à un objet privé.

Syntaxe

BOOL AccessCheckByTypeResultList(
  [in]                PSECURITY_DESCRIPTOR pSecurityDescriptor,
  [in, optional]      PSID                 PrincipalSelfSid,
  [in]                HANDLE               ClientToken,
  [in]                DWORD                DesiredAccess,
  [in, out, optional] POBJECT_TYPE_LIST    ObjectTypeList,
  [in]                DWORD                ObjectTypeListLength,
  [out]               PGENERIC_MAPPING     GenericMapping,
  [out, optional]     PPRIVILEGE_SET       PrivilegeSet,
  [in, out]           LPDWORD              PrivilegeSetLength,
  [out]               LPDWORD              GrantedAccessList,
  [out]               LPDWORD              AccessStatusList
);

Paramètres

[in] pSecurityDescriptor

Pointeur vers une structure SECURITY_DESCRIPTOR sur laquelle l’accès est vérifié.

[in, optional] PrincipalSelfSid

Pointeur vers un identificateur de sécurité (SID). Si le descripteur de sécurité est associé à un objet qui représente un principal (par exemple, un objet utilisateur), le paramètre PrincipalSelfSid doit être le SID de l’objet. Lors de l’évaluation de l’accès, ce SID remplace logiquement le SID dans toute entrée de contrôle d’accès (ACE) qui contient le sid bien connu PRINCIPAL_SELF (S-1-5-10). Pour plus d’informations sur les SID connus, consultez SiDs connus.

Si l’objet protégé ne représente pas de principal, définissez ce paramètre sur NULL.

[in] ClientToken

Handle à un jeton d’emprunt d’identité qui représente le client qui tente d’obtenir l’accès. Le handle doit avoir TOKEN_QUERY accès au jeton ; sinon, la fonction échoue avec ERROR_ACCESS_DENIED.

[in] DesiredAccess

Masque d’accès qui spécifie les droits d’accès à case activée. Ce masque doit avoir été mappé par la fonction MapGenericMask pour ne contenir aucun droit d’accès générique.

Si ce paramètre est MAXIMUM_ALLOWED, la fonction définit les masques d’accès dans le tableau GrantedAccess pour indiquer les droits d’accès maximum du client à chaque élément de la liste des types d’objets.

[in, out, optional] ObjectTypeList

Pointeur vers un tableau de structures OBJECT_TYPE_LIST qui identifient la hiérarchie des types d’objets pour lesquels case activée accès. Chaque élément du tableau spécifie un GUID qui identifie le type d’objet et une valeur qui indique le niveau du type d’objet dans la hiérarchie des types d’objets. Le tableau ne doit pas avoir deux éléments avec le même GUID.

Le tableau doit avoir au moins un élément. Le premier élément du tableau doit se trouver au niveau zéro et identifier l’objet lui-même. Le tableau ne peut avoir qu’un seul élément de niveau zéro. Le deuxième élément est un sous-objet, tel qu’un jeu de propriétés, au niveau 1. Après chaque entrée de niveau 1 se trouvent des entrées subordonnées pour les sous-objets de niveau 2 à 4. Par conséquent, les niveaux des éléments du tableau peuvent être {0, 1, 2, 2, 1, 2, 3}. Si la liste des types d’objets n’est pas en ordre, AccessCheckByTypeResultList échoue et GetLastError retourne ERROR_INVALID_PARAMETER.

[in] ObjectTypeListLength

Nombre d’éléments dans le tableau ObjectTypeList . Il s’agit également du nombre d’éléments dans les tableaux indiqués par les paramètres GrantedAccessList et AccessStatusList .

[out] GenericMapping

Pointeur vers la structure GENERIC_MAPPING associée à l’objet pour lequel l’accès est vérifié.

[out, optional] PrivilegeSet

Pointeur vers une structure de PRIVILEGE_SET qui reçoit les privilèges utilisés pour effectuer la validation de l’accès. Si aucun privilège n’a été utilisé, la fonction définit le membre PrivilegeCount sur zéro.

[in, out] PrivilegeSetLength

Taille, en octets, de la mémoire tampon pointée vers le paramètre PrivilegeSet .

[out] GrantedAccessList

Pointeur vers un tableau de masques d’accès. La fonction définit chaque masque d’accès pour indiquer les droits d’accès accordés à l’élément correspondant dans la liste des types d’objets. Si la fonction échoue, elle ne définit pas les masques d’accès.

[out] AccessStatusList

Pointeur vers un tableau de codes status pour les éléments correspondants dans la liste des types d’objets. La fonction définit un élément sur zéro pour indiquer la réussite ou une valeur différente de zéro pour indiquer l’erreur spécifique pendant l’case activée d’accès. Si la fonction échoue, elle ne définit aucun des éléments du tableau.

Valeur retournée

Si la fonction réussit, la fonction retourne une valeur différente de zéro.

Si la fonction échoue, elle retourne zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Pour plus d’informations, consultez Vue d’ensemble du fonctionnement d’AccessCheck .

La fonction AccessCheckByTypeResultList compare le descripteur de sécurité spécifié au jeton d’accès spécifié et indique, dans le paramètre AccessStatusList , si l’accès est accordé ou refusé pour chacun des éléments de la liste des types d’objets.

Le tableau ObjectTypeList ne représente pas nécessairement l’ensemble de l’objet défini. Il représente plutôt le sous-ensemble de l’objet auquel case activée accès. Pour instance, pour case activée l’accès à deux propriétés dans un jeu de propriétés, spécifiez une liste de types d’objets avec quatre éléments : l’objet lui-même au niveau zéro, la propriété définie au niveau 1 et les deux propriétés au niveau 2.

La fonction AccessCheckByTypeResultList évalue les AÉC qui s’appliquent à l’objet lui-même et les AOC spécifiques à l’objet pour les types d’objets répertoriés dans le tableau ObjectTypeList . La fonction ignore les ADE spécifiques aux objets pour les types d’objets non répertoriés dans le tableau ObjectTypeList . Ainsi, les résultats retournés pour l’élément zéro dans le paramètre AccessStatusList indiquent l’accès autorisé au sous-ensemble de l’objet défini par le paramètre ObjectTypeList , et non à l’objet entier.

Pour plus d’informations sur la façon dont une hiérarchie d’ACRE contrôle l’accès à un objet et à ses sous-objets, consultez ADE pour contrôler l’accès aux propriétés d’un objet.

Si la liste de contrôle d’accès discrétionnaire (DACL) du descripteur de sécurité est NULL, la fonction accorde l’accès demandé à tous les éléments de la liste de types d’objets.

Si le descripteur de sécurité ne contient pas de SID de propriétaire et de groupe, AccessCheckByTypeResultList échoue avec ERROR_INVALID_SECURITY_DESCR.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête securitybaseapi.h (inclure Windows.h)
Bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

AccessCheck

AccessCheckAndAuditAlarm

AccessCheckByType

AccessCheckByTypeAndAuditAlarm

AccessCheckByTypeResultListAndAuditAlarm

Access Control client/serveur

Fonctions client/serveur Access Control

GENERIC_MAPPING

Fonctionnement d’AccessCheck

MakeAbsoluteSD

MapGenericMask

OBJECT_TYPE_LIST

PRIVILEGE_SET

SECURITY_DESCRIPTOR