mirror of https://github.com/tongzx/nt5src
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.
120 lines
2.9 KiB
120 lines
2.9 KiB
|
|
|
|
|
|
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
|
|
};
|