Compartir a través de


estructura ACCESS_STATE (wdm.h)

La estructura ACCESS_STATE describe el estado de un acceso en curso. Contiene el contexto del sujeto de un objeto, los tipos de acceso deseados restantes, los tipos de acceso concedidos y, opcionalmente, un conjunto de privilegios para indicar qué privilegios se usaron para permitir el acceso.

Los controladores no van a modificar directamente la estructura de ACCESS_STATE. Para crear y manipular esta estructura, use las rutinas de soporte técnico enumeradas en la sección Ver también.

Sintaxis

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;

Miembros

OperationID

Identificador de la operación a la que se relaciona este acceso. Este miembro se reemplaza por TransactionId en el miembro AuxData y actualmente no lo están usando los controladores.

SecurityEvaluated

Valor booleano que especifica si la seguridad se evaluó como parte de la comprobación de acceso. Actualmente, los controladores no están usando este miembro.

GenerateAudit

Valor booleano que especifica si el acceso debe generar una auditoría. Actualmente, los controladores no están usando este miembro.

GenerateOnClose

Valor booleano que especifica si se debe generar una auditoría cuando se cierra el identificador que se va a crear. Actualmente, los controladores no están usando este miembro.

PrivilegesAllocated

Valor booleano que especifica si se asignaron privilegios como parte de la comprobación de acceso. Actualmente, los controladores no están usando este miembro.

Flags

Valor de 32 bits que contiene marcas de campo de bits para el acceso. Un controlador puede comprobar la marca de acceso de recorrido (TOKEN_HAS_TRAVERSE_PRIVILEGE). Para obtener más información sobre cómo comprobar el acceso de recorrido, consulte Comprobación de privilegios de recorrido en IRP_MJ_CREATE. Un controlador también puede comprobar la marca TOKEN_IS_RESTRICTED. Estas marcas se definen en Ntifs.h.

RemainingDesiredAccess

Tipo de ACCESS_MASK que describe los derechos de acceso que aún no se han concedido al autor de la llamada. Un controlador usa este miembro para determinar si el sistema de seguridad de Windows puede conceder acceso. Si se puede conceder acceso, el controlador actualiza los miembros PreviouslyGrantedAccess y RemainingDesiredAccess en consecuencia.

PreviouslyGrantedAccess

Tipo ACCESS_MASK que especifica la información sobre el acceso que ya se ha concedido al autor de la llamada de una de las rutinas del Monitor de referencia de seguridad. El sistema de seguridad de Windows concede ciertos derechos en función de los privilegios del autor de la llamada, como recorrer la derecha (la capacidad de atravesar un directorio como parte de la apertura de un subdirectorio o archivo).

OriginalDesiredAccess

Tipo de ACCESS_MASK que contiene los derechos de acceso originales solicitados por el autor de la llamada.

SubjectSecurityContext

Estructura SECURITY_SUBJECT_CONTEXT que contiene información sobre el contexto de seguridad del sujeto que se usa para validar y auditar el acceso.

SecurityDescriptor

Puntero a una estructura de SECURITY_DESCRIPTOR que contiene información de seguridad para el objeto al que se relaciona este acceso.

AuxData

Puntero a un bloque de memoria que contiene datos auxiliares para el acceso.

Privileges

Unión que puede contener una de las siguientes estructuras. Esta unión permite insertar tres privilegios en la estructura de estado de acceso. Si se requieren más privilegios durante la operación, se asignarán en la extensión de miembro AuxData . Actualmente, los controladores no están usando este miembro.

Privileges.InitialPrivilegeSet

Estructura INITIAL_PRIVILEGE_SET que especifica un conjunto de privilegios iniciales para el acceso.

Privileges.PrivilegeSet

Estructura PRIVILEGE_SET que especifica un conjunto de privilegios para el acceso.

AuditPrivileges

Valor booleano que especifica si se debe auditar un uso de privilegios. Actualmente, los controladores no están usando este miembro.

ObjectName

Estructura UNICODE_STRING que contiene la cadena de nombre de objeto para el acceso. Este miembro se usa para la auditoría.

ObjectTypeName

Estructura UNICODE_STRING que contiene la cadena de nombre de tipo de objeto para el acceso. Este miembro se usa para la auditoría.

Requisitos

Requisito Valor
Header wdm.h (incluya Ntifs.h)

Consulte también

ACCESS_MASK

IRP_MJ_CREATE

LUID

ObOpenObjectByPointer

PRIVILEGE_SET

SECURITY_DESCRIPTOR

SECURITY_SUBJECT_CONTEXT

SeAppendPrivileges

SeCaptureSubjectContext

SeOpenObjectAuditAlarm

SeOpenObjectForDeleteAuditAlarm

SeSetAccessStateGenericMapping

UNICODE_STRING