RtlAddAce 函数 (ntifs.h)
RtlAddAce 例程将一个或多个访问控制条目 (ACE) 添加到指定的访问控制列表 (ACL) 。
语法
NTSYSAPI NTSTATUS RtlAddAce(
[in, out] PACL Acl,
[in] ULONG AceRevision,
[in] ULONG StartingAceIndex,
[in] PVOID AceList,
[in] ULONG AceListLength
);
参数
[in, out] Acl
指向要修改的 ACL 的指针。 RtlAddAce 将指定的 ACE 添加到此 ACL。
[in] AceRevision
要添加的 ACE 的 ACL 修订级别。 Windows 版本要求如下:
值 | 含义 |
---|---|
ACL_REVISION | 修订级别在所有 Windows 版本上都有效。 |
ACL_REVISION_DS | 从 Windows 2000 开始有效的修订级别。 |
如果 Acl 中的 ACL 包含特定于对象的 ACE,则必须ACL_REVISION_DS AceRevision。
[in] StartingAceIndex
指定 ACL 的 ACE 列表中要添加新 ACE 的位置。 值为零会将 ACE 插入到列表的开头。 MAXULONG 的值将 ACE 追加到列表的末尾。
[in] AceList
指向缓冲区的指针,其中包含要添加到指定 ACL 的一个或多个 ACE 的列表。 列表中的 ACE 必须连续存储。
[in] AceListLength
AceList 参数指向的输入缓冲区的大小(以字节为单位)。
返回值
RtlAddAce 返回STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:
返回代码 | 说明 |
---|---|
STATUS_BUFFER_TOO_SMALL | 新的 ACE 不适合 ACL。 需要更大的 ACL 缓冲区。 STATUS_BUFFER_TOO_SMALL是错误代码。 |
STATUS_INVALID_PARAMETER | 其中一个参数值无效。 可能的原因包括指定的 ACL 无效或指定的修订未知、与 ACE 列表中的修订不兼容或与 ACL 的修订不兼容。 STATUS_INVALID_PARAMETER是错误代码。 |
注解
有关计算 ACL 大小的信息,请参阅 RtlCreateAcl 参考条目的“备注”部分。
若要获取指向 ACL 中 ACE 的指针,请使用 RtlGetAce。
若要从 ACL 中删除 ACE,请使用 RtlDeleteAce。
若要将允许访问的 ACE 添加到 ACL,请使用 RtlAddAccessAllowedAce。
有关安全性和访问控制的详细信息,请参阅 面向驱动程序开发人员的 Windows 安全模型 以及 Windows SDK 中有关这些主题的文档。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 带有 SP1 的 Windows Server 2003 |
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe (内核模式) ;Ntdll.dll (用户模式) |
IRQL | <= APC_LEVEL |