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
SeOpenObjectForDeleteAuditAlarm