структура 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) |
См. также раздел
SeOpenObjectForDeleteAuditAlarm