Partager via


structure ACCESS_STATE (wdm.h)

La structure ACCESS_STATE décrit l’état d’un accès en cours. Il contient le contexte d’objet d’un objet, les types d’accès souhaités restants, les types d’accès accordés et, éventuellement, un ensemble de privilèges pour indiquer quels privilèges ont été utilisés pour autoriser l’accès.

Les pilotes ne doivent pas modifier directement la structure ACCESS_STATE. Pour créer et manipuler cette structure, utilisez les routines de prise en charge répertoriées dans la section Voir aussi.

Syntaxe

typedef struct _ACCESS_STATE {
  LUID                     OperationID;
  BOOLEAN                  SecurityEvaluated;
  BOOLEAN                  GenerateAudit;
  BOOLEAN                  GenerateOnClose;
  BOOLEAN                  PrivilegesAllocated;
  ULONG                    Flags;
  ACCESS_MASK              RemainingDesiredAccess;
  ACCESS_MASK              PreviouslyGrantedAccess;
  ACCESS_MASK              OriginalDesiredAccess;
  SECURITY_SUBJECT_CONTEXT SubjectSecurityContext;
  PSECURITY_DESCRIPTOR     SecurityDescriptor;
  PVOID                    AuxData;
  union {
    INITIAL_PRIVILEGE_SET InitialPrivilegeSet;
    PRIVILEGE_SET         PrivilegeSet;
  } Privileges;
  BOOLEAN                  AuditPrivileges;
  UNICODE_STRING           ObjectName;
  UNICODE_STRING           ObjectTypeName;
} ACCESS_STATE, *PACCESS_STATE;

Membres

OperationID

Identificateur de l’opération à laquelle cet accès est lié. Ce membre est remplacé par TransactionId dans le membre AuxData et n’est actuellement pas utilisé par les pilotes.

SecurityEvaluated

Valeur booléenne qui spécifie si la sécurité a été évaluée dans le cadre du case activée d’accès. Ce membre n’est actuellement pas utilisé par les pilotes.

GenerateAudit

Valeur booléenne qui spécifie si l’accès doit générer un audit. Ce membre n’est actuellement pas utilisé par les pilotes.

GenerateOnClose

Valeur booléenne qui spécifie si un audit doit être généré lors de la fermeture du handle en cours de création. Ce membre n’est actuellement pas utilisé par les pilotes.

PrivilegesAllocated

Valeur booléenne qui spécifie si des privilèges ont été alloués dans le cadre du case activée d’accès. Ce membre n’est actuellement pas utilisé par les pilotes.

Flags

Valeur 32 bits qui contient des indicateurs de champ de bits pour l’accès. Un pilote peut case activée pour l’indicateur d’accès (TOKEN_HAS_TRAVERSE_PRIVILEGE). Pour plus d’informations sur la façon de case activée pour l’accès traversant, consultez Rechercher le privilège traverse sur IRP_MJ_CREATE. Un pilote peut également case activée pour l’indicateur TOKEN_IS_RESTRICTED. Ces indicateurs sont définis dans Ntifs.h.

RemainingDesiredAccess

Un ACCESS_MASK type qui décrit les droits d’accès qui n’ont pas encore été accordés à l’appelant. Un pilote utilise ce membre pour déterminer si le système de sécurité Windows peut accorder l’accès. Si l’accès peut être accordé, le pilote met à jour les membres PreviouslyGrantedAccess et RemainingDesiredAccess en conséquence.

PreviouslyGrantedAccess

Un ACCESS_MASK type qui spécifie les informations sur l’accès qui a déjà été accordé à l’appelant de l’une des routines du moniteur de référence de sécurité. Le système de sécurité Windows accorde certains droits en fonction des privilèges de l’appelant, tels que le droit de passage (la possibilité de parcourir un répertoire dans le cadre de l’ouverture d’un sous-répertoire ou d’un fichier).

OriginalDesiredAccess

Un ACCESS_MASK type qui contient les droits d’accès d’origine qui ont été demandés par l’appelant.

SubjectSecurityContext

Une structure SECURITY_SUBJECT_CONTEXT qui contient des informations sur le contexte de sécurité de l’objet utilisé pour valider et auditer l’accès.

SecurityDescriptor

Pointeur vers une structure de SECURITY_DESCRIPTOR qui contient des informations de sécurité pour l’objet auquel cet accès est lié.

AuxData

Pointeur vers un bloc de mémoire qui contient des données auxiliaires pour l’accès.

Privileges

Union qui peut contenir l’une des structures suivantes. Cette union permet à trois privilèges d’être incorporés dans la structure d’état d’accès. Si d’autres privilèges sont requis pendant l’opération, ils sont alloués dans l’extension membre AuxData . Ce membre n’est actuellement pas utilisé par les pilotes.

Privileges.InitialPrivilegeSet

Structure INITIAL_PRIVILEGE_SET qui spécifie un ensemble de privilèges initiaux pour l’accès.

Privileges.PrivilegeSet

Une structure PRIVILEGE_SET qui spécifie un ensemble de privilèges pour l’accès.

AuditPrivileges

Valeur booléenne qui spécifie si une utilisation des privilèges doit être auditée. Ce membre n’est actuellement pas utilisé par les pilotes.

ObjectName

Une structure UNICODE_STRING qui contient la chaîne de nom d’objet pour l’accès. Ce membre est utilisé pour l’audit.

ObjectTypeName

Structure UNICODE_STRING qui contient la chaîne de nom de type d’objet pour l’accès. Ce membre est utilisé pour l’audit.

Configuration requise

Condition requise Valeur
En-tête wdm.h (inclure Ntifs.h)

Voir aussi

ACCESS_MASK

IRP_MJ_CREATE

LUID

ObOpenObjectByPointer

PRIVILEGE_SET

SECURITY_DESCRIPTOR

SECURITY_SUBJECT_CONTEXT

SeAppendPrivileges

SeCaptureSubjectContext

SeOpenObjectAuditAlarm

SeOpenObjectForDeleteAuditAlarm

SeSetAccessStateGenericMapping

UNICODE_STRING