WindowsXP-SP1/ds/adsi/router/cacl.hxx
2020-09-30 16:53:49 +02:00

109 lines
2.1 KiB
C++

typedef struct _AccessControlEntry {
IADsAccessControlEntry FAR * pAccessControlEntry;
struct _AccessControlEntry * pNext;
} ACCESS_CONTROL_ENTRY, *PACCESS_CONTROL_ENTRY;
struct _ACLEnumEntry; // ACL_ENUM_ENTRY;
class CAccessControlList;
class CAccessControlList : INHERIT_TRACKING,
public ISupportErrorInfo,
public IADsAccessControlList
{
friend class CAccCtrlListEnum;
public:
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ;
DECLARE_STD_REFCOUNTING
DECLARE_IDispatch_METHODS
DECLARE_ISupportErrorInfo_METHODS
DECLARE_IADsAccessControlList_METHODS
CAccessControlList::CAccessControlList();
CAccessControlList::~CAccessControlList();
static
HRESULT
CAccessControlList::CreateAccessControlList(
REFIID riid,
void **ppvObj
);
static
HRESULT
CAccessControlList::AllocateAccessControlListObject(
CAccessControlList ** ppAccessControlList
);
HRESULT
CAccessControlList::GetElement(
DWORD dwPos,
IADsAccessControlEntry ** pAce
);
STDMETHOD(Next)(
ULONG cElements,
VARIANT FAR* pvar,
ULONG FAR* pcElementFetched
);
private:
HRESULT
CAccessControlList::AddEnumerator(
CAccCtrlListEnum *pACLEnum
);
HRESULT
CAccessControlList::RemoveEnumerator(
CAccCtrlListEnum *pACLEnum
);
void
CAccessControlList::AdjustCurPtrOfEnumerators(
DWORD dwPosNewOrDeletedACE,
BOOL fAddACE
);
protected:
CDispatchMgr FAR * _pDispMgr;
DWORD _dwAclRevision;
DWORD _dwAceCount;
PACCESS_CONTROL_ENTRY _pAccessControlEntry;
PACCESS_CONTROL_ENTRY _pCurrentEntry;
struct _ACLEnumEntry * _pACLEnums; // PACL_ENUM_ENTRY
};
HRESULT
CopyAccessControlEntry(
IADsAccessControlEntry * pSourceAce,
IADsAccessControlEntry ** ppTargetAce
);
BOOL
EquivalentAces(
IADsAccessControlEntry * pSourceAce,
IADsAccessControlEntry * pDestAce
);