windows-nt/Source/XPSP1/NT/ds/adsi/winnt/cgroup.hxx
2020-09-26 16:20:57 +08:00

165 lines
3.2 KiB
C++

#define COMPUTER_Group 1
#define DOMAIN_Group 2
class CWinNTGroup;
class CWinNTGroup : INHERIT_TRACKING,
public CCoreADsObject,
public ISupportErrorInfo,
public IADsGroup,
public IADsPropertyList,
public INonDelegatingUnknown,
public IADsExtension
{
friend class CWinNTGroupGenInfo;
public:
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ;
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// INonDelegatingUnknown methods
STDMETHOD(NonDelegatingQueryInterface)(THIS_
const IID&,
void **
);
DECLARE_NON_DELEGATING_REFCOUNTING
DECLARE_IDispatch_METHODS
DECLARE_ISupportErrorInfo_METHODS
DECLARE_IADs_METHODS
DECLARE_IADsGroup_METHODS
DECLARE_IADsPropertyList_METHODS
DECLARE_IADsExtension_METHODS
CWinNTGroup::CWinNTGroup();
CWinNTGroup::~CWinNTGroup();
static
HRESULT
CWinNTGroup::CreateGroup(
BSTR Parent,
ULONG ParentType,
BSTR DomainName,
BSTR ServerName,
BSTR GroupName,
ULONG GroupType,
DWORD dwObjectState,
REFIID riid,
CWinNTCredentials& Credentials,
void **ppvObj
);
static
HRESULT
CWinNTGroup::CreateGroup(
BSTR Parent,
ULONG ParentType,
BSTR DomainName,
BSTR ServerName,
BSTR GroupName,
ULONG GroupType,
DWORD dwObjectState,
PSID pSid, // OPTIONAL
REFIID riid,
CWinNTCredentials& Credentials,
void **ppvObj
);
static
HRESULT
CWinNTGroup::AllocateGroupObject(
CWinNTGroup ** ppGroup
);
STDMETHOD(GetInfo)(THIS_ DWORD dwApiLevel, BOOL fExplicit) ;
STDMETHOD(ImplicitGetInfo)(void);
//
// Helper to delete based on SID.
//
HRESULT DeleteBySID(
LPWSTR pszStringSID,
LPWSTR pszServerName
);
//
// Helper to add based on SID.
//
HRESULT AddBySID(
LPWSTR pszStringSID,
LPWSTR pszServerName
);
protected:
HRESULT
CWinNTGroup::UnMarshall(LPBYTE lpBuffer, DWORD dwApiLevel, BOOL fExplicit);
HRESULT
CWinNTGroup::UnMarshall_Level1(BOOL fExplicit, LPBYTE pBuffer);
HRESULT
CWinNTGroup::Prepopulate(
BOOL fExplicit,
PSID pSid // OPTIONAL
);
HRESULT
CWinNTGroup::Marshall_Set_Level1(
LPWSTR szHostServerName,
BOOL fExplicit,
LPBYTE pBuffer
);
HRESULT
CWinNTGroup::Marshall_Create_Level1(
LPWSTR szHostServerName,
LPGROUP_INFO_1 pGroupInfo1
);
HRESULT
CWinNTGroup::GetStandardInfo(
DWORD dwApiLevel,
BOOL fExplicit
);
HRESULT
CWinNTGroup::GetSidInfo(
BOOL fExplicit
);
protected:
ULONG _ParentType;
BSTR _DomainName;
BSTR _ServerName;
ULONG _GroupType;
CAggregatorDispMgr FAR * _pDispMgr;
CADsExtMgr FAR * _pExtMgr;
CPropertyCache * _pPropertyCache;
CWinNTCredentials _Credentials;
};