InitializeAcl

【勇芳软件工作室】汉化HomePreviousNext

InitializeAcl函数创建一个新的ACL结构。

ACL是访问控制列表。

BOOL InitializeAcl(

PACL 【ACL】,//访问控制列表的地址
DWORD 【nAclLength】,//访问控制列表的大小
DWORD 【dwAclRevision】//访问控制列表的修订级别
); 

参数

【ACL】

指向由此函数初始化的ACL结构。

【nAclLength】

指定【ACL】参数指向的缓冲区的长度(以字节为单位)。该值必须足够大以包含ACL头和所有访问控制条目(ACE)存储在ACL中。

在计算ACL的大小时,请注意,ACL中的ACE中的ACE会将其SidStart成员指定的SidStart成员复制到ACE结构,从ACE的{ 989796059}成员。因此,ACL中添加的ACL {ACL)需要ACE的空间减少SidStart成员的大小(DWORD)。

例如,大到足以包含单个ACCESS_ALLOWED_ACEACL缓冲区的大小是:

cbAcl = sizeof(ACL) + sizeof(ACCESS_ALLOWED_ACE)

+ GetLengthSid(pSid) - sizeof(DWORD) ;

另一个例子:大小足够容纳七个ACCESS_DENIED_ACE结构的ACL缓冲区的大小是:

cbAcl = sizeof(ACL) + 7 * ( sizeof(ACCESS_DENIED_ACE) - sizeof(DWORD)) +

GetLengthSid(pSid1)+ GetLengthSid(pSid2)+ ...+ GetLengthSid(pSid7)

【dwAclRevision】

指定ACL的修订级别。此参数必须设置为当前版本级别,此版本级别定义为此版本的Windows的ACL_REVISION。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

由此函数初始化的ACL不包含ACE。它是空的,而不是一个不存在的ACL。如果一个空的ACL被应用于一个对象,它隐含地拒绝对该对象的所有访问。

也可以看看

ACCESS_ALLOWED_ACE, ACCESS_DENIED_ACE, ACL, AddAccessAllowedAce, AddAccessDeniedAce, AddAce, AddAuditAccessAce, DeleteAce, GetAce, GetAclInformation, IsValidAcl, SetAclInformation, SID