Fonction AccessCheck (securitybaseapi.h)

La fonction AccessCheck 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. En règle générale, les applications serveur utilisent cette fonction pour case activée l’accès à un objet privé.

Syntaxe

BOOL AccessCheck(
  [in]            PSECURITY_DESCRIPTOR pSecurityDescriptor,
  [in]            HANDLE               ClientToken,
  [in]            DWORD                DesiredAccess,
  [in]            PGENERIC_MAPPING     GenericMapping,
  [out, optional] PPRIVILEGE_SET       PrivilegeSet,
  [in, out]       LPDWORD              PrivilegeSetLength,
  [out]           LPDWORD              GrantedAccess,
  [out]           LPBOOL               AccessStatus
);

Paramètres

[in] pSecurityDescriptor

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

[in] ClientToken

Handle d’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 le masque d’accès GrantedAccess pour indiquer les droits d’accès maximum autorisés par le descripteur de sécurité au client.

[in] 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

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

[out] GrantedAccess

Pointeur vers un masque d’accès qui reçoit les droits d’accès accordés. Si AccessStatus a la valeur FALSE, la fonction définit le masque d’accès sur zéro. Si la fonction échoue, elle ne définit pas le masque d’accès.

[out] AccessStatus

Pointeur vers une variable qui reçoit les résultats du case activée d’accès. Si le descripteur de sécurité autorise les droits d’accès demandés au client identifié par le jeton d’accès, AccessStatus a la valeur TRUE. Sinon, AccessStatus a la valeur FALSE et vous pouvez appeler GetLastError pour obtenir des informations d’erreur étendues.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à 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 AccessCheck compare le descripteur de sécurité spécifié avec le jeton d’accès spécifié et indique, dans le paramètre AccessStatus , si l’accès est accordé ou refusé. Si l’accès est accordé, le masque d’accès demandé devient le masque d’accès accordé à l’objet.

Si la liste DACL du descripteur de sécurité est NULL, le paramètre AccessStatus retourne TRUE, ce qui indique que le client dispose de l’accès demandé.

La fonction AccessCheck échoue avec ERROR_INVALID_SECURITY_DESCR si le descripteur de sécurité ne contient pas de SID de propriétaire et de groupe.

La fonction AccessCheck ne génère pas d’audit. Si votre application nécessite des audits pour les vérifications d’accès, utilisez des fonctions telles que AccessCheckAndAuditAlarm, AccessCheckByTypeAndAuditAlarm, AccessCheckByTypeResultListAndAuditAlarm ou AccessCheckByTypeResultListAndAuditAlarmByHandle, au lieu d’AccessCheck.

Exemples

Pour obtenir un exemple qui utilise cette fonction, consultez Vérification de l’accès client avec des listes de contrôle d’accès.

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

AccessCheckAndAuditAlarm

AreAllAccessesGranted

AreAnyAccessesGranted

Access Control client/serveur

Fonctions client/serveur Access Control

GENERIC_MAPPING

Fonctionnement d’AccessCheck

MakeAbsoluteSD

MapGenericMask

PRIVILEGE_SET

PrivilegeCheck

SECURITY_DESCRIPTOR