структура ACCESS_STATE (wdm.h)

Структура ACCESS_STATE описывает состояние доступа. Он содержит контекст субъекта объекта, остальные требуемые типы доступа, предоставленные типы доступа и, при необходимости, набор привилегий, указывающий, какие привилегии использовались для разрешения доступа.

Драйверы не должны изменять структуру ACCESS_STATE напрямую. Чтобы создать эту структуру и управлять ими, используйте подпрограммы поддержки, перечисленные в разделе См. также.

Синтаксис

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;

Члены

OperationID

Идентификатор операции, к которому относится этот доступ. Этот элемент заменяется transactionId в элементе AuxData и в настоящее время не используется драйверами.

SecurityEvaluated

Логическое значение, указывающее, оценивалась ли безопасность как часть проверка доступа. В настоящее время этот элемент не используется драйверами.

GenerateAudit

Логическое значение, указывающее, должен ли доступ создавать аудит. В настоящее время этот элемент не используется драйверами.

GenerateOnClose

Логическое значение, указывающее, следует ли создавать аудит при закрытии создаваемого дескриптора. В настоящее время этот элемент не используется драйверами.

PrivilegesAllocated

Логическое значение, указывающее, были ли привилегии выделены в рамках проверка доступа. В настоящее время этот элемент не используется драйверами.

Flags

32-разрядное значение, содержащее флаги битовых полей для доступа. Драйвер может проверка для флага проходного доступа (TOKEN_HAS_TRAVERSE_PRIVILEGE). Дополнительные сведения о том, как проверка для доступа к обходу, см. в разделе Проверка привилегий обхода в IRP_MJ_CREATE. Драйвер также может проверка для флага TOKEN_IS_RESTRICTED. Эти флаги определены в Ntifs.h.

RemainingDesiredAccess

Тип ACCESS_MASK , описывающий права доступа, которые еще не предоставлены вызывающему объекту. Драйвер использует этот элемент, чтобы определить, может ли система безопасности Windows предоставить доступ. Если доступ может быть предоставлен, драйвер соответствующим образом обновляет элементы PreviouslyGrantedAccess и RemainingDesiredAccess .

PreviouslyGrantedAccess

Тип ACCESS_MASK , указывающий сведения о доступе, который уже был предоставлен вызывающему объекту одной из подпрограмм мониторинга ссылок на безопасность. Система безопасности Windows предоставляет определенные права, основанные на привилегиях вызывающего объекта, например право обхода (возможность прохода по каталогу при открытии подкаталога или файла).

OriginalDesiredAccess

Тип ACCESS_MASK , содержащий исходные права доступа, запрошенные вызывающим.

SubjectSecurityContext

Структура SECURITY_SUBJECT_CONTEXT , содержащая сведения о контексте безопасности субъекта, который используется для проверки и аудита доступа.

SecurityDescriptor

Указатель на структуру SECURITY_DESCRIPTOR , содержащую сведения о безопасности для объекта, к которому относится этот доступ.

AuxData

Указатель на блок памяти, содержащий вспомогательные данные для доступа.

Privileges

Объединение, которое может содержать одну из следующих структур. Это объединение позволяет встраивать три привилегии в структуру состояния доступа. Если во время операции требуются дополнительные привилегии, они будут выделены в расширении-члене AuxData . В настоящее время этот элемент не используется драйверами.

Privileges.InitialPrivilegeSet

Структура INITIAL_PRIVILEGE_SET , задающая набор начальных привилегий для доступа.

Privileges.PrivilegeSet

Структура PRIVILEGE_SET , указывающая набор привилегий для доступа.

AuditPrivileges

Логическое значение, указывающее, следует ли проводить аудит использования привилегий. В настоящее время этот элемент не используется драйверами.

ObjectName

Структура UNICODE_STRING , содержащая строку имени объекта для доступа. Этот элемент используется для аудита.

ObjectTypeName

Структура UNICODE_STRING , содержащая строку имени типа объекта для доступа. Этот элемент используется для аудита.

Требования

Требование Значение
Заголовок wdm.h (включая Ntifs.h)

См. также раздел

ACCESS_MASK

IRP_MJ_CREATE

LUID

ObOpenObjectByPointer

PRIVILEGE_SET

SECURITY_DESCRIPTOR

SECURITY_SUBJECT_CONTEXT

SeAppendPrivileges

SeCaptureSubjectContext

SeOpenObjectAuditAlarm

SeOpenObjectForDeleteAuditAlarm

SeSetAccessStateGenericMapping

UNICODE_STRING