//---------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 2000. // // File: cumiobj.hxx // // Contents: Header file for CUmiObject. // // History: 03-06-00 SivaramR Created. // //---------------------------------------------------------------------------- #ifndef __CUMIOBJ_H__ #define __CUMIOBJ_H__ #include "iadsp.h" class CUmiPropList; class CCoreADsObject; class CUmiObject : INHERIT_TRACKING, public IUmiContainer, public IUmiCustomInterfaceFactory, public IUmiADSIPrivate { public: CUmiObject(void); ~CUmiObject(void); DECLARE_STD_REFCOUNTING STDMETHODIMP QueryInterface( REFIID iid, LPVOID *ppInterface ); HRESULT FInit( CWinNTCredentials& Credentials, PROPERTYINFO *pSchema, DWORD dwSchemaSize, CPropertyCache *pPropertyCache, IUnknown *pUnkOuter, CADsExtMgr *pExtMgr, CCoreADsObject *pCoreObj, CLASSINFO *pClassInfo ); STDMETHODIMP Clone( ULONG uFlags, REFIID riid, LPVOID *pCopy ); STDMETHODIMP Refresh( ULONG uFlags, ULONG uNameCount, LPWSTR *pszNames ); STDMETHODIMP Commit(ULONG uFlags); STDMETHODIMP Put( LPCWSTR pszName, ULONG uFlags, UMI_PROPERTY_VALUES *pProp ); STDMETHODIMP Get( LPCWSTR pszName, ULONG uFlags, UMI_PROPERTY_VALUES **ppProp ); STDMETHODIMP GetAs( LPCWSTR pszName, ULONG uFlags, ULONG uCoercionType, UMI_PROPERTY_VALUES **ppProp ); STDMETHODIMP FreeMemory( ULONG uReserved, LPVOID pMem ); STDMETHODIMP GetAt( LPCWSTR pszName, ULONG uFlags, ULONG uBufferLength, LPVOID pExistingMem ); STDMETHODIMP GetProps( LPCWSTR *pszNames, ULONG uNameCount, ULONG uFlags, UMI_PROPERTY_VALUES **pProps ); STDMETHODIMP PutProps( LPCWSTR *pszNames, ULONG uNameCount, ULONG uFlags, UMI_PROPERTY_VALUES *pProps ); STDMETHODIMP PutFrom( LPCWSTR pszName, ULONG uFlags, ULONG uBufferLength, LPVOID pExistingMem ); STDMETHODIMP Delete( LPCWSTR pszName, ULONG uFlags ); STDMETHODIMP GetLastStatus( ULONG uFlags, ULONG *puSpecificStatus, REFIID riid, LPVOID *pStatusObj ); STDMETHODIMP GetInterfacePropList( ULONG uFlags, IUmiPropList **pPropList ); STDMETHODIMP Open( IUmiURL *pURL, ULONG uFlags, REFIID TargetIID, LPVOID *ppInterface ); STDMETHODIMP PutObject( ULONG uFlags, REFIID TargetIID, LPVOID pInterface ); STDMETHODIMP DeleteObject( IUmiURL *pURL, ULONG uFlags ); STDMETHODIMP Create( IUmiURL *pURL, ULONG uFlags, IUmiObject **pNewObj ); STDMETHODIMP Move( ULONG uFlags, IUmiURL *pOldURL, IUmiURL *pNewURL ); STDMETHODIMP CreateEnum( IUmiURL *pszEnumContext, ULONG uFlags, REFIID TargetIID, LPVOID *ppInterface ); STDMETHODIMP ExecQuery( IUmiQuery *pQuery, ULONG uFlags, REFIID TargetIID, LPVOID *ppInterface ); STDMETHODIMP GetCLSIDForIID( REFIID riid, long lFlags, CLSID *pCLSID ); STDMETHODIMP GetObjectByCLSID( CLSID clsid, IUnknown *pUnkOuter, DWORD dwClsContext, REFIID riid, long lFlags, void **ppInterface ); STDMETHODIMP GetCLSIDForNames( LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId, long lFlags, CLSID *pCLSID ); STDMETHODIMP GetContainer(void **ppContainer); STDMETHODIMP GetCoreObject(void **ppCoreObj); STDMETHODIMP CopyTo( ULONG uFlags, IUmiURL *pURL, REFIID riid, LPVOID *pCopy ); STDMETHODIMP_(void) SetUmiFlag(void) { m_pCreds->SetUmiFlag(); } STDMETHODIMP_(void) ResetUmiFlag(void) { m_pCreds->ResetUmiFlag(); } private: IUmiPropList *m_pIntfProps; CUmiPropList *m_pObjProps; IUnknown *m_pUnkInner; IADs *m_pIADs; IADsContainer *m_pIADsContainer; ULONG m_ulErrorStatus; CCoreADsObject *m_pCoreObj; CADsExtMgr *m_pExtMgr; BOOL m_fOuterUnkSet; CPropertyCache *m_pPropCache; BOOL m_fRefreshDone; CWinNTCredentials* m_pCreds; void SetLastStatus(ULONG ulStatus); BOOL IsRelativePath(IUmiURL *pURL); HRESULT GetClassAndPath( LPWSTR pszPath, LPWSTR *ppszClass, LPWSTR *ppszPath ); HRESULT CreateObjectProperties( PPROPERTYINFO pSchema, DWORD dwSchemaSize, IUnknown *pUnkInner, CCoreADsObject *pCoreObj ); HRESULT CopyPropCache( IUmiObject *pDest, IUmiObject *pSrc ); HRESULT CheckClasses( DWORD dwNumComponents, LPWSTR *ppszClasses ); }; #endif //__CUMIOBJ_H__