You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.1 KiB
108 lines
2.1 KiB
|
|
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
|
|
);
|