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

另请参阅

Ace

ACL

RtlAddAccessAllowedAce

RtlCreateAcl

RtlDeleteAce

RtlGetAce