AddAccessDeniedAceEx 函式 (securitybaseapi.h)

AddAccessDeniedAceEx 函式會將拒絕存取的訪問控制專案 (ACE) 新增至任意訪問控制清單結尾, (DACL) 。

語法

BOOL AddAccessDeniedAceEx(
  [in, out] PACL  pAcl,
  [in]      DWORD dwAceRevision,
  [in]      DWORD AceFlags,
  [in]      DWORD AccessMask,
  [in]      PSID  pSid
);

參數

[in, out] pAcl

DACL 的指標。 AddAccessDeniedAceEx 函式會將拒絕存取的 ACE 新增至此 DACL 的結尾。 ACE 的格式為 ACCESS_DENIED_ACE 結構。

[in] dwAceRevision

指定要修改之 DACL 的修訂層級。 此值可以是ACL_REVISION或ACL_REVISION_DS。 如果 DACL 包含物件特定的 ACE,請使用ACL_REVISION_DS。

[in] AceFlags

一組控制 ACE 繼承的位旗標。 函式會在新 ACE ACE_HEADER 結構的 AceFlags 成員中設定這些旗標。 此參數可以是下列值的組合。

意義
CONTAINER_INHERIT_ACE
ACE 會由容器對象繼承。
INHERIT_ONLY_ACE
ACE 不適用於指派 ACL) (訪問控制清單 的物件,但可由子物件繼承。
INHERITED_ACE
表示繼承的 ACE。 此旗標允許變更物件樹狀結構上安全性的作業,以修改繼承的 ACE,但不會變更直接套用至物件的 ACE。
NO_PROPAGATE_INHERIT_ACE
OBJECT_INHERIT_ACE和CONTAINER_INHERIT_ACE位不會傳播至繼承的ACE。
OBJECT_INHERIT_ACE
ACE 是由非容器對象繼承。

[in] AccessMask

一組位旗標,使用 ACCESS_MASK 格式來指定新 ACE 拒絕指定 安全性識別碼 的訪問許可權, (SID) 。

[in] pSid

SID 的指標,識別新 ACE 拒絕存取的使用者、群組或 登入工作階段

傳回值

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 以下是可能的錯誤值。

傳回碼 Description
ERROR_ALLOTTED_SPACE_EXCEEDED
新的 ACE 不符合 ACL。 需要較大的 ACL 緩衝區。
ERROR_INVALID_ACL
指定的 ACL 格式不正確。
ERROR_INVALID_FLAGS
AceFlags 參數無效。
ERROR_INVALID_SID
指定的 SID 在結構上無效。
ERROR_REVISION_MISMATCH
指定的修訂未知,或與 ACL 的修訂不相容。
ERROR_SUCCESS
已成功新增 ACE。

備註

雖然 AddAccessDeniedAceEx 函式會將新的 ACE 新增至 DACL 的結尾,但拒絕存取 ACE 應該會出現在 DACL 的開頭。 呼叫端必須確定 ACE 會以正確的順序新增至 DACL。 如需詳細資訊,請參閱 DACL 中的 ACE 順序

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 securitybaseapi.h (包含 Windows.h)
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

ACCESS_DENIED_ACE

ACCESS_MASK

ACE_HEADER

AddAccessAllowedAceEx

AddAuditAccessAceEx

低階 存取控制

低階 存取控制 函式