////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2002-2004 Microsoft Corporation // // Module Name: // VdsClasses.h // // Implementation File: // VdsClasses.cpp // // Description: // Definition of the VDS WMI Provider classes. // // Author: Jim Benton (jbenton) 15-Jan-2002 // // Notes: // ////////////////////////////////////////////////////////////////////////////// #pragma once ////////////////////////////////////////////////////////////////////////////// // Include Files ////////////////////////////////////////////////////////////////////////////// #include "ProvBase.h" extern CRITICAL_SECTION g_csThreadData; ////////////////////////////////////////////////////////////////////////////// //++ // // class CVolume // // Description: // Provider Implementation for Volume // //-- ////////////////////////////////////////////////////////////////////////////// class CVolume : public CProvBase { // // constructor // public: CVolume( LPCWSTR pwszNameIn, CWbemServices * pNamespaceIn ); ~CVolume() { } // // methods // public: virtual HRESULT EnumInstance( long lFlagsIn, IWbemContext* pCtxIn, IWbemObjectSink* pHandlerIn ); virtual HRESULT GetObject( CObjPath& rObjPathIn, long lFlagsIn, IWbemContext* pCtxIn, IWbemObjectSink* pHandlerIn ); virtual HRESULT ExecuteMethod( BSTR bstrObjPathIn, WCHAR* pwszMethodNameIn, long lFlagIn, IWbemClassObject* pParamsIn, IWbemObjectSink* pHandlerIn ); virtual HRESULT PutInstance( CWbemClassObject& rInstToPutIn, long lFlagIn, IWbemContext* pCtxIn, IWbemObjectSink* pHandlerIn ); virtual HRESULT DeleteInstance( CObjPath& rObjPathIn, long lFlagIn, IWbemContext* pCtxIn, IWbemObjectSink* pHandlerIn ) { return WBEM_E_NOT_SUPPORTED; }; static CProvBase * S_CreateThis( LPCWSTR pwszNameIn, CWbemServices* pNamespaceIn ); HRESULT Initialize(); private: void LoadInstance( IN WCHAR* pwszVolume, IN OUT IWbemClassObject* pObject); BOOL IsValid( IN WCHAR* pwszVolume); BOOL IsDirty( IN WCHAR* pwszVolume); BOOL IsMountable( IN WCHAR* pwszVolume); BOOL HasMountPoints( IN WCHAR* pwszVolume); HRESULT ExecAddMountPoint( IN BSTR bstrObjPath, IN WCHAR* pwszMethodName, IN long lFlag, IN IWbemClassObject* pParams, IN IWbemObjectSink* pHandler); HRESULT ExecMount( IN BSTR bstrObjPath, IN WCHAR* pwszMethodName, IN long lFlag, IN IWbemClassObject* pParams, IN IWbemObjectSink* pHandler); HRESULT ExecDismount( IN BSTR bstrObjPath, IN WCHAR* pwszMethodName, IN long lFlag, IN IWbemClassObject* pParams, IN IWbemObjectSink* pHandler); HRESULT ExecDefrag( IN BSTR bstrObjPath, IN WCHAR* pwszMethodName, IN long lFlag, IN IWbemClassObject* pParams, IN IWbemObjectSink* pHandler); HRESULT ExecDefragAnalysis( IN BSTR bstrObjPath, IN WCHAR* pwszMethodName, IN long lFlag, IN IWbemClassObject* pParams, IN IWbemObjectSink* pHandler); HRESULT ExecChkdsk( IN BSTR bstrObjPath, IN WCHAR* pwszMethodName, IN long lFlag, IN IWbemClassObject* pParams, IN IWbemObjectSink* pHandler); HRESULT ExecScheduleAutoChk( IN BSTR bstrObjPath, IN WCHAR* pwszMethodName, IN long lFlag, IN IWbemClassObject* pParams, IN IWbemObjectSink* pHandler); HRESULT ExecExcludeAutoChk( IN BSTR bstrObjPath, IN WCHAR* pwszMethodName, IN long lFlag, IN IWbemClassObject* pParams, IN IWbemObjectSink* pHandler); HRESULT ExecFormat( IN BSTR bstrObjPath, IN WCHAR* pwszMethodName, IN long lFlag, IN IWbemClassObject* pParams, IN IWbemObjectSink* pHandler); DWORD AddMountPoint( IN WCHAR* pwszVolume, IN WCHAR* pwszDirectory); DWORD Mount( IN WCHAR* pwszVolume); DWORD Dismount( IN WCHAR* pwszVolume, IN BOOL fForce, IN BOOL fPermanent); DWORD Defrag( IN WCHAR* pwszVolume, OUT BOOL fForce, IN IWbemObjectSink* pHandler, IN OUT IWbemClassObject* pObject); DWORD DefragAnalysis( IN WCHAR* pwszVolume, OUT BOOL* pfDefragRecommended, IN OUT IWbemClassObject* pObject); DWORD Chkdsk( IN WCHAR* pwszVolume, IN BOOL fFixErrors, IN BOOL fVigorousIndexCheck, IN BOOL fSkipFolderCycle, IN BOOL fForceDismount, IN BOOL fRecoverBadSectors, IN BOOL fOkToRunAtBootup ); DWORD AutoChk( IN const WCHAR* pwszAutoChkCommand, IN WCHAR* pwmszVolumes ); DWORD Format( IN WCHAR* pwszVolume, IN BOOL fQuickFormat, IN BOOL fEnableCompression, IN WCHAR* pwszFileSystem, IN DWORD cbAllocationSize, IN WCHAR* pwszLabel, IN IWbemObjectSink* pHandler ); void SetDriveLetter( IN WCHAR* pwszVolume, IN WCHAR* pwszDrive ); void SetLabel( IN WCHAR* pwszVolume, IN WCHAR* pwszLabel ); void SetContentIndexing( IN WCHAR* pwszVolume, IN BOOL fIndexingEnabled ); void SetQuotasEnabled( IN WCHAR* pwszVolume, IN BOOL fQuotasEnabled ); }; // class CVolume ////////////////////////////////////////////////////////////////////////////// //++ // // class CMountPoint // // Description: // Provider Implementation for Volume // //-- ////////////////////////////////////////////////////////////////////////////// class CMountPoint : public CProvBase { // // constructor // public: CMountPoint( LPCWSTR pwszNameIn, CWbemServices * pNamespaceIn ); ~CMountPoint(){ } // // methods // public: virtual HRESULT EnumInstance( long lFlagsIn, IWbemContext* pCtxIn, IWbemObjectSink* pHandlerIn ); virtual HRESULT GetObject( CObjPath& rObjPathIn, long lFlagsIn, IWbemContext* pCtxIn, IWbemObjectSink* pHandlerIn ); virtual HRESULT ExecuteMethod( BSTR bstrObjPathIn, WCHAR* pwszMethodNameIn, long lFlagIn, IWbemClassObject* pParamsIn, IWbemObjectSink* pHandlerIn ) { return WBEM_E_NOT_SUPPORTED; }; virtual HRESULT PutInstance( CWbemClassObject& rInstToPutIn, long lFlagIn, IWbemContext* pCtxIn, IWbemObjectSink* pHandlerIn ); virtual HRESULT DeleteInstance( CObjPath& rObjPathIn, long lFlagIn, IWbemContext* pCtxIn, IWbemObjectSink* pHandlerIn ); static CProvBase * S_CreateThis( LPCWSTR pwszNameIn, CWbemServices* pNamespaceIn ); HRESULT Initialize(); private: void LoadInstance( IN WCHAR* pwszVolume, IN WCHAR* pwszDirectory, IN OUT IWbemClassObject* pObject); }; // class CMountPoint