/*++ Copyright (c) 1998-2000 Microsoft Corporation Module Name: iisprov.h Abstract: Global include file. This file is included by pretty much everything, so to minimize dependencies, only put stuff in here that will be used by majority of files. Author: ??? Revision History: Mohit Srivastava 18-Dec-00 --*/ #ifndef _iisprov_H_ #define _iisprov_H_ extern "C" { #include #include #include } #include #include #include #include #include #include #include #include #include #include #include "iisfiles.h" #include #include "ProviderBase.h" #include "schema.h" #include "schemadynamic.h" #include "hashtable.h" #include "metabase.h" #include "utils.h" #include "globalconstants.h" // // These variables keep track of when the module can be unloaded // extern long g_cLock; // // Provider interfaces are provided by objects of this class // class CIISInstProvider : public CProviderBase { public: static bool ms_bInitialized; // If Initialize succeeded // // Implemented // CIISInstProvider( BSTR ObjectPath = NULL, BSTR User = NULL, BSTR Password = NULL, IWbemContext* pCtx = NULL) {} HRESULT STDMETHODCALLTYPE DoInitialize( LPWSTR i_wszUser, LONG i_lFlags, LPWSTR i_wszNamespace, LPWSTR i_wszLocale, IWbemServices* i_pNamespace, IWbemContext* i_pCtx, IWbemProviderInitSink* i_pInitSink); HRESULT STDMETHODCALLTYPE DoCreateInstanceEnumAsync( const BSTR i_ClassName, long i_lFlags, IWbemContext __RPC_FAR* i_pCtx, IWbemObjectSink __RPC_FAR* i_pHandler); HRESULT STDMETHODCALLTYPE DoDeleteInstanceAsync( const BSTR i_ObjectPath, long i_lFlags, IWbemContext __RPC_FAR* i_pCtx, IWbemObjectSink __RPC_FAR* i_pHandler); HRESULT STDMETHODCALLTYPE DoExecMethodAsync( const BSTR i_strObjectPath, const BSTR i_strMethodName, long i_lFlags, IWbemContext* i_pCtx, IWbemClassObject* i_pInParams, IWbemObjectSink* i_pHandler); HRESULT STDMETHODCALLTYPE DoGetObjectAsync( const BSTR i_ObjectPath, long i_lFlags, IWbemContext __RPC_FAR* i_pCtx, IWbemObjectSink __RPC_FAR* i_pHandler); HRESULT STDMETHODCALLTYPE DoPutInstanceAsync( IWbemClassObject __RPC_FAR* i_pObj, long i_lFlags, IWbemContext __RPC_FAR* i_pCtx, IWbemObjectSink __RPC_FAR* i_pHandler); HRESULT STDMETHODCALLTYPE DoExecQueryAsync( const BSTR i_bstrQueryLanguage, const BSTR i_bstrQuery, long i_lFlags, IWbemContext __RPC_FAR* i_pCtx, IWbemObjectSink __RPC_FAR* i_pResponseHandler); private: IWbemClassObject* ConstructExtendedStatus( const CIIsProvException* i_pException) const; IWbemClassObject* ConstructExtendedStatus( HRESULT i_hr) const; void ValidatePutParsedObject( ParsedObjectPath* i_pParsedObject, IWbemClassObject* i_pObj, bool* io_pbInstanceNameSame, bool* io_pbInstanceExists, WMI_CLASS** o_ppWmiClass = NULL); // // Worker methods called by public methods // void WorkerGetObjectAsync( IWbemClassObject** o_ppObj, BSTR i_bstrObjPath, bool i_bCreateKeyIfNotExist); void WorkerGetObjectAsync( IWbemClassObject** o_ppObj, ParsedObjectPath* i_pParsedObjPath, bool i_bCreateKeyIfNotExist); void WorkerExecMethodAsync( BSTR i_strObjectPath, BSTR i_strMethodName, IWbemContext* i_pCtx, IWbemClassObject* i_pInParams, IWbemObjectSink* i_pHandler); void WorkerDeleteObjectAsync( ParsedObjectPath* i_pParsedObject); void WorkerPutObjectAsync( IWbemClassObject* i_pObj, IWbemClassObject* i_pObjOld, // can be NULL ParsedObjectPath* i_pParsedObject, long i_lFlags, bool i_bInstanceExists, BSTR* o_pbstrObjPath); void WorkerEnumObjectAsync( BSTR i_bstrClassName, IWbemObjectSink FAR* i_pHandler); // // These methods should only be called by WorkerExecMethodAsync // void WorkerExecFtpServiceMethod( LPCWSTR i_wszMbPath, WMI_CLASS* i_pClass, WMI_METHOD* i_pMethod, IWbemContext* i_pCtx, IWbemClassObject* i_pInParams, IWbemObjectSink* i_pHandler); void WorkerExecWebServiceMethod( LPCWSTR i_wszMbPath, WMI_CLASS* i_pClass, WMI_METHOD* i_pMethod, IWbemContext* i_pCtx, IWbemClassObject* i_pInParams, IWbemObjectSink* i_pHandler); static void WorkerExecWebAppMethod( LPCWSTR i_wszMbPath, LPCWSTR i_wszClassName, WMI_METHOD* i_pMethod, IWbemContext* i_pCtx, IWbemClassObject* i_pInParams, IWbemObjectSink* i_pHandler, CWbemServices* i_pNameSpace); static void WorkerExecComputerMethod( LPCWSTR i_wszMbPath, LPCWSTR i_wszClassName, WMI_METHOD* i_pMethod, IWbemContext* i_pCtx, IWbemClassObject* i_pInParams, IWbemObjectSink* i_pHandler, CWbemServices* i_pNameSpace); static void WorkerExecCertMapperMethod( LPCWSTR i_wszMbPath, LPCWSTR i_wszClassName, WMI_METHOD* i_pMethod, IWbemContext* i_pCtx, IWbemClassObject* i_pInParams, IWbemObjectSink* i_pHandler, CWbemServices* i_pNameSpace); static void WorkerExecAppPoolMethod( LPCWSTR i_wszMbPath, LPCWSTR i_wszClassName, WMI_METHOD* i_pMethod, IWbemContext* i_pCtx, IWbemClassObject* i_pInParams, IWbemObjectSink* i_pHandler, CWbemServices* i_pNameSpace); }; // This class is the class factory for CInstPro objects. class CProvFactory : public IClassFactory { protected: ULONG m_cRef; public: CProvFactory(void); ~CProvFactory(void); //IUnknown members STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); //IClassFactory members STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, PPVOID); STDMETHODIMP LockServer(BOOL); }; #endif