(wdm.h) 的 ACL 结构

ACL 结构是访问控制列表的标头 (ACL) 。 完整的 ACL 包含 ACL 结构,后跟 ACE) (零个或多个访问控制条目的有序列表。

语法

typedef struct _ACL {
  UCHAR  AclRevision;
  UCHAR  Sbz1;
  USHORT AclSize;
  USHORT AceCount;
  USHORT Sbz2;
} ACL;

成员

AclRevision

ACL 的修订级别。

Microsoft Windows NT 4.0 及更早版本:此值必须ACL_REVISION。

Microsoft Windows 2000 及更高版本: 此值可以ACL_REVISION或ACL_REVISION_DS。 如果 ACL 包含特定于对象的 ACE,则必须ACL_REVISION_DS。

Sbz1

在 16 位边界上对齐 AclRevision 成员的零字节填充。

AclSize

ACL 的大小(以字节为单位)。 此值包括 ACL 结构和所有 ACE。

AceCount

ACL 中存储的 ACE 数。

Sbz2

在 32 位边界上对齐 ACL 结构的两个零字节填充。

注解

ACL 包含零个或多个 ACE 的顺序列表。 ACL 中的各个 ACE 的编号从 0 到 n,其中 n+1 是 ACL 中的 ACE 数。 编辑 ACL 时,驱动程序通过其索引引用 ACL 中的 ACE。

有两种类型的 ACL:自由裁量和系统。

可自由裁量 ACL (DACL) 由对象的所有者或授予WRITE_DAC访问该对象的任何人控制。 它指定特定的用户和组对对象的访问权限。 例如,文件的所有者可以使用 DACL 来控制哪些用户和组可以和不能访问该文件。

对象还可以具有与之关联的系统级安全信息,其形式为系统 ACL (SACL) 由系统管理员控制。 SACL 可以允许系统管理员审核任何获取对象访问权限的尝试。

当前定义了三个 ACE 结构:

Attribute 说明
ACCESS_ALLOWED_ACE 向用户或组授予指定权限。 此 ACE 存储在 DACL 中。
ACCESS_DENIED_ACE 拒绝用户或组的指定权限。 此 ACE 存储在 DACL 中。
SYSTEM_AUDIT_ACE 指定将导致系统级审核的访问类型。 此 ACE 存储在 SACL 中。
 

目前不支持第四个 ACE 结构(SYSTEM_ALARM_ACE)。

应将 ACL 结构视为不透明结构,驱动程序不应尝试直接使用其成员。 为了确保 ACL 在语义上正确,驱动程序可以使用“另请参阅”部分中列出的函数来创建和操作 ACL。

ACL 和 ACE 结构必须在 32 位边界上对齐。

要求

要求
Header wdm.h (包括 Wdm.h)

另请参阅

ACCESS_ALLOWED_ACE

ACCESS_DENIED_ACE

Ace

RtlAddAccessAllowedAce

RtlCreateAcl

RtlGetAce

RtlSetDaclSecurityDescriptor

SYSTEM_ALARM_ACE

SYSTEM_AUDIT_ACE

TOKEN_DEFAULT_DACL