ACCESS_DENIED_CALLBACK_OBJECT_ACE結構 (winnt.h)

ACCESS_DENIED_CALLBACK_OBJECT_ACE 結構會定義 訪問控制專案 (ACE),控制拒絕存取物件、屬性集或屬性。 ACE 包含一組訪問許可權、識別物件類型的 GUID,以及識別系統拒絕存取 信任安全性標識碼。 ACE 也包含 GUID,以及一組旗標,可控制子物件繼承 ACE。

呼叫 AuthzAccessCheck 函式時, 每個 ACCESS_DENIED_CALLBACK_OBJECT_ACE 結構包含在 SECURITY_DESCRIPTOR 結構的 DACL 中傳遞至 AuthzAccessCheck 函式的指標,都會叫用呼叫應用程式定義的 AuthzAccessCheckCallback 函式,其中找到之 ACCESS_DENIED_CALLBACK_OBJECT_ACE 結構的指標會傳遞至 pAce 參數中。

語法

typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE {
  ACE_HEADER  Header;
  ACCESS_MASK Mask;
  DWORD       Flags;
  GUID        ObjectType;
  GUID        InheritedObjectType;
  DWORD       SidStart;
} ACCESS_DENIED_CALLBACK_OBJECT_ACE, *PACCESS_DENIED_CALLBACK_OBJECT_ACE;

成員

Header

ACE_HEADER 結構,指定 ACE 的大小和類型。 它包含旗標,可控制子物件繼承 ACE。 ACE_HEADER 結構的 AceType 成員應設定為 ACCESS_DENIED_CALLBACK_ACE_TYPE,且 AceSize 成員應設定為配置給 ACCESS_DENIED_CALLBACK_OBJECT_ACE 結構的位元組總數。

Mask

ACCESS_MASK,指定系統將拒絕給信任人的訪問許可權。

Flags

一組位旗標,指出是否 ObjectTypeInheritedObjectType 成員存在。 此參數可以是下列其中一或多個值。

價值 意義
0
ObjectTypeInheritedObjectType 都不存在。 SidStart 成員緊接在 Flags 成員之後。
ACE_OBJECT_TYPE_PRESENT
ObjectType 存在,且包含 GUID

如果未指定此值,則 InheritedObjectType 成員緊接在 旗標 成員之後。

ACE_INHERITED_OBJECT_TYPE_PRESENT
InheritedObjectType 存在,且包含 GUID

如果未指定此值,則所有類型的子物件都可以繼承 ACE。

ObjectType

只有當ACE_OBJECT_TYPE_PRESENT位是在 旗標 成員中設定時,這個成員才會存在。 否則,InheritedObjectType 成員緊接在 Flags 成員之後。

如果這個成員存在,它是 GUID 結構,可識別屬性集、屬性、擴充許可權或子物件的類型。 這個 GUID 的目的取決於 Mask 成員中指定的訪問許可權。

價值 意義
ADS_RIGHT_DS_CONTROL_ACCESS
ObjectTypeGUID 識別延伸訪問許可權。
ADS_RIGHT_DS_CREATE_CHILD
ObjectTypeGUID 識別子物件的類型。 ACE 控制受託人建立這種子物件類型的權利。
ADS_RIGHT_DS_READ_PROP
ObjectTypeGUID 識別物件的屬性集或屬性。 ACE 控制信任項讀取屬性或屬性集的權利。
ADS_RIGHT_DS_WRITE_PROP
ObjectTypeGUID 識別物件的屬性集或屬性。 ACE 控制受託人寫入屬性或屬性集的權利。
ADS_RIGHT_DS_SELF
ObjectTypeGUID 會識別已驗證的寫入。

InheritedObjectType

只有在 Flags 成員中設定ACE_INHERITED_OBJECT_TYPE_PRESENT位時,這個成員才會存在。

如果這個成員存在,它是 GUID 結構,可識別可繼承 ACE 的子物件類型。 繼承也由 ACE_HEADER中的繼承旗標控制,以及不受子物件上之繼承的任何保護所控制。

此成員的位移可能會有所不同。 如果 旗標 成員不包含ACE_OBJECT_TYPE_PRESENT旗標,則 InheritedObjectType 成員會從 ObjectType 成員指定的位移開始。

SidStart

受託人 SID 的第一個 DWORD。 SID 的其餘位元組會儲存在 SidStart 成員之後的連續記憶體中。 此 SID 可以附加應用程式資料。

言論

如果未指定 ObjectTypeInheritedObjectTypeGUID,則 ACCESS_DENIED_CALLBACK_OBJECT_ACE 結構具有與 ACCESS_DENIED_CALLBACK_ACE 結構所使用的語意相同。 在此情況下,請使用 ACCESS_DENIED_CALLBACK_ACE 結構,因為它較小且更有效率。

包含 ACCESS_DENIED_CALLBACK_OBJECT_ACE 的 ACL 必須在其 ACL 標頭中指定ACL_REVISION_DS修訂編號。

Mask 成員所指定的訪問許可權會遭到任何 信任者 拒絕,該信任 具有與儲存在 SidStart 成員中的 SID 相符。

建立 ACCESS_DENIED_CALLBACK_OBJECT_ACE 結構時,必須配置足夠的記憶體,以容納 ObjectType 中的 GUID 結構,並 InheritedObjectType 成員,如果其中一個或兩者都存在,以及容納 SidStart 成員中信任項的完整 SID,以及後續的連續記憶體。

要求

要求 價值
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2003 [僅限傳統型應用程式]
標頭 winnt.h (包括 Windows.h)

另請參閱

ACE

ACL

AddAuditAccessObjectAce

GUID

SID