estrutura ACCESS_STATE (wdm.h)

A estrutura ACCESS_STATE descreve o estado de um acesso em andamento. Ele contém o contexto de assunto de um objeto, os tipos de acesso desejados restantes, os tipos de acesso concedidos e, opcionalmente, um conjunto de privilégios para indicar quais privilégios foram usados para permitir o acesso.

Os drivers não devem modificar a estrutura de ACCESS_STATE diretamente. Para criar e manipular essa estrutura, use as rotinas de suporte listadas na seção Consulte também.

Sintaxe

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;

Membros

OperationID

O identificador da operação à qual esse acesso está relacionado. Esse membro é substituído por TransactionId no membro AuxData e atualmente não é usado por drivers.

SecurityEvaluated

Um valor booliano que especifica se a segurança foi avaliada como parte da marcar de acesso. No momento, esse membro não é usado por drivers.

GenerateAudit

Um valor booliano que especifica se o acesso deve gerar uma auditoria. No momento, esse membro não é usado por drivers.

GenerateOnClose

Um valor booliano que especifica se uma auditoria deve ser gerada quando o identificador que está sendo criado é fechado. No momento, esse membro não é usado por drivers.

PrivilegesAllocated

Um valor booliano que especifica se os privilégios foram alocados como parte da marcar de acesso. No momento, esse membro não é usado por drivers.

Flags

Um valor de 32 bits que contém sinalizadores de campo de bit para o acesso. Um driver pode marcar para o sinalizador de acesso de passagem (TOKEN_HAS_TRAVERSE_PRIVILEGE). Para obter mais informações sobre como marcar para acesso de passagem, consulte Verificar o privilégio de passagem em IRP_MJ_CREATE. Um driver também pode marcar para o sinalizador TOKEN_IS_RESTRICTED. Esses sinalizadores são definidos em Ntifs.h.

RemainingDesiredAccess

Um tipo de ACCESS_MASK que descreve os direitos de acesso que ainda não foram concedidos ao chamador. Um driver usa esse membro para determinar se o sistema de segurança do Windows pode conceder acesso. Se o acesso puder ser concedido, o driver atualizará os membros PreviouslyGrantedAccess e RemainingDesiredAccess adequadamente.

PreviouslyGrantedAccess

Um tipo de ACCESS_MASK que especifica as informações sobre o acesso que já foram concedidas ao chamador de uma das Rotinas do Monitor de Referência de Segurança. O sistema de segurança do Windows concede determinados direitos com base nos privilégios do chamador, como percorrer à direita (a capacidade de percorrer um diretório como parte da abertura de um subdiretório ou arquivo).

OriginalDesiredAccess

Um tipo de ACCESS_MASK que contém os direitos de acesso originais que foram solicitados pelo chamador.

SubjectSecurityContext

Uma estrutura SECURITY_SUBJECT_CONTEXT que contém informações sobre o contexto de segurança do assunto que é usado para validar e auditar o acesso.

SecurityDescriptor

Um ponteiro para uma estrutura SECURITY_DESCRIPTOR que contém informações de segurança para o objeto ao qual esse acesso está relacionado.

AuxData

Um ponteiro para um bloco de memória que contém dados auxiliares para o acesso.

Privileges

Uma união que pode conter uma das estruturas a seguir. Essa união permite que três privilégios sejam inseridos na estrutura de estado de acesso. Se mais privilégios forem necessários durante a operação, eles serão alocados na extensão de membro AuxData . No momento, esse membro não é usado por drivers.

Privileges.InitialPrivilegeSet

Uma estrutura INITIAL_PRIVILEGE_SET que especifica um conjunto de privilégios iniciais para o acesso.

Privileges.PrivilegeSet

Uma estrutura PRIVILEGE_SET que especifica um conjunto de privilégios para o acesso.

AuditPrivileges

Um valor booliano que especifica se um uso de privilégio deve ser auditado. No momento, esse membro não é usado por drivers.

ObjectName

Uma estrutura UNICODE_STRING que contém a cadeia de caracteres de nome do objeto para o acesso. Esse membro é usado para auditoria.

ObjectTypeName

Uma estrutura UNICODE_STRING que contém a cadeia de caracteres de nome do tipo de objeto para o acesso. Esse membro é usado para auditoria.

Requisitos

Requisito Valor
Cabeçalho wdm.h (inclua Ntifs.h)

Confira também

ACCESS_MASK

IRP_MJ_CREATE

LUID

ObOpenObjectByPointer

PRIVILEGE_SET

SECURITY_DESCRIPTOR

SECURITY_SUBJECT_CONTEXT

SeAppendPrivileges

SeCaptureSubjectContext

SeOpenObjectAuditAlarm

SeOpenObjectForDeleteAuditAlarm

SeSetAccessStateGenericMapping

UNICODE_STRING