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 };