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

此访问所关联的操作的标识符。 此成员由 AuxData 成员中的 TransactionId 替换,驱动程序当前未使用。

SecurityEvaluated

一个布尔值,指定安全性是否作为访问检查的一部分进行评估。 驱动程序当前未使用此成员。

GenerateAudit

一个布尔值,指定访问是否应生成审核。 驱动程序当前未使用此成员。

GenerateOnClose

一个布尔值,指定在关闭创建的句柄时是否应生成审核。 驱动程序当前未使用此成员。

PrivilegesAllocated

一个布尔值,指定权限是否作为访问检查的一部分进行分配。 驱动程序当前未使用此成员。

Flags

包含访问的位字段标志的 32 位值。 驱动程序可以检查遍历访问标志 (TOKEN_HAS_TRAVERSE_PRIVILEGE) 。 有关如何检查遍历访问的详细信息,请参阅检查IRP_MJ_CREATE上的遍历特权。 驱动程序还可以为TOKEN_IS_RESTRICTED标志检查。 这些标志在 Ntifs.h 中定义。

RemainingDesiredAccess

描述尚未授予调用方的访问权限 的ACCESS_MASK 类型。 驱动程序使用此成员来确定 Windows 安全系统是否可以授予访问权限。 如果可以授予访问权限,驱动程序会相应地更新 PreviouslyGrantedAccessRemainingDesiredAccess 成员。

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 结构。 此成员用于审核。

要求

要求
Header 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