RtlAddAce 函式 (ntifs.h)

RtlAddAce 例程會將一或多個存取控制專案 (ACL) 新增至指定的存取控制清單 (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 會將指定的 ACL 新增至此 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。 MAXULONG的值會將 ACE 附加至清單結尾。

[in] AceList

緩衝區的指標,其中包含要加入至指定 ACL 的一或多個 ACE 清單。 清單中的 ACE 必須連續儲存。

[in] AceListLength

AceList 參數所指向之輸入緩衝區的大小,以位元組為單位。

傳回值

RtlAddAce 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一項:

傳回碼 Description
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 中這些主題的相關文件。

規格需求

需求
最低支援的用戶端 Windows Server 2003 SP1
目標平台 Universal
標頭 ntifs.h (包含 Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe (核心模式) ;Ntdll.dll (使用者模式)
IRQL <= APC_LEVEL

另請參閱

Ace

ACL

RtlAddAccessAllowedAce

RtlCreateAcl

RtlDeleteAce

RtlGetAce