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

88 lines
2 KiB
C++

#ifndef _Nametranslate
#define _NameTrsnslate
#include "ntdsapi.h"
class CNameTranslate;
typedef struct _DomainToHandle {
LPWSTR szDomain;
HANDLE hDS;
} DomainToHandle;
#define STRINGPLEX_INC 10
class CDomainToHandle
{
public:
CDomainToHandle();
~CDomainToHandle();
HRESULT Init();
void Free();
HRESULT AddElement(LPWSTR szValue, HANDLE hDS);
HRESULT Find(LPWSTR szValue, HANDLE *phDS);
DWORD NumElements();
private:
DomainToHandle *m_rgMap;
DWORD m_cszMax;
DWORD m_iszNext;
};
class CNameTranslate : INHERIT_TRACKING,
public IADsNameTranslate
{
public:
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ;
DECLARE_STD_REFCOUNTING
DECLARE_IDispatch_METHODS
STDMETHOD(Init)(THIS_ long lnType, BSTR bstrADsPath);
STDMETHOD(InitEx)(THIS_ long lnType, BSTR bstrADsPath,
BSTR bstrUser,BSTR bstrDomain,BSTR bstrPassword);
STDMETHOD(Set)(THIS_ long dwSetType, BSTR bstrADsPath);
STDMETHOD(Get)(THIS_ long dwFormatType, BSTR FAR *pbstrADsPath);
STDMETHOD(GetEx)(THIS_ long dwFormatType, VARIANT FAR *pbstrADsPath);
STDMETHOD(SetEx)(THIS_ long dwFormatType, VARIANT bstrADsPath);
STDMETHOD(put_ChaseReferral)(THIS_ long lnChase) ; \
CNameTranslate::CNameTranslate();
CNameTranslate::~CNameTranslate();
static
HRESULT
CNameTranslate::CreateNameTranslate(
REFIID riid,
void **ppvObj
);
static
HRESULT
CNameTranslate::AllocateNameTranslateObject(
CNameTranslate ** ppNameTranslate
);
private:
HANDLE _hDS;
WCHAR _szGuid[MAX_TOKEN_LENGTH];
LPWSTR *_rgszGuid;
HANDLE *_rgDomainHandle;
DWORD _cGuid;
BOOLEAN _bChaseReferral;
BOOLEAN _bAuthSet;
RPC_AUTH_IDENTITY_HANDLE _AuthIdentity;
CDomainToHandle *_pDomainHandle;
protected:
CDispatchMgr FAR * _pDispMgr;
};
#endif