109 lines
2 KiB
C++
109 lines
2 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
|
||
|
);
|