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

121 lines
2.9 KiB
C++

class CWinNTNamespace;
class CWinNTNamespace : INHERIT_TRACKING,
public CCoreADsObject,
public ISupportErrorInfo,
public IADsContainer,
public IADs,
public IADsOpenDSObject,
public IADsPathnameProvider,
public INonDelegatingUnknown,
public IADsExtension
{
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_IADsContainer_METHODS
DECLARE_IADsOpenDSObject_METHODS
DECLARE_IADsExtension_METHODS
CWinNTNamespace::CWinNTNamespace();
CWinNTNamespace::~CWinNTNamespace();
STDMETHOD(ParsePath)(THIS_ BSTR bstrPath, DWORD dwType, PPATH_OBJECTINFO pObjectInfo);
STDMETHOD(ConstructPath)(THIS_ PPATH_OBJECTINFO pObjectInfo, DWORD dwType, DWORD dwFlag, DWORD dwEscapedMode, BSTR *pbstrPath);
static
HRESULT
CWinNTNamespace::CreateNamespace(
BSTR Parent,
BSTR NamespaceName,
DWORD dwObjectState,
REFIID riid,
CWinNTCredentials& Credentials,
void **ppvObj
);
static
HRESULT
CWinNTNamespace::AllocateNamespaceObject(
CWinNTNamespace ** ppNamespace
);
static
HRESULT
CWinNTNamespace::SetObjInfoComponents(OBJECTINFO *pObjectInfo,
PATH_OBJECTINFO *pObjectInfoTarget);
static
void
CWinNTNamespace::FreeObjInfoComponents(
PATH_OBJECTINFO *pObjectInfo
);
void
CWinNTNamespace::SetComponent(
LPWSTR szReturn,
DWORD cComponents,
BOOL fEscaped
);
HRESULT
CWinNTNamespace::SetComponents(
LPWSTR szReturn,
LPWSTR chSeparator,
DWORD dwType,
BOOL fEscaped
);
STDMETHODIMP
CWinNTNamespace::GetEscapedElement(
LONG lnReserved,
BSTR bstrInStr,
BSTR* pbstrOutStr
);
STDMETHOD(ImplicitGetInfo)(void);
protected:
VARIANT _vFilter;
CWinNTCredentials _Credentials;
CAggregatorDispMgr *_pDispMgr;
PPATH_OBJECTINFO _pObjectInfo; // PathCracker pathinfo
};
enum {
ADS_COMPONENT_LEAF,
ADS_COMPONENT_DN,
ADS_COMPONENT_PARENT
};