/*++ Copyright (c) 1997-1999 Microsoft Corporation Module Name: frs.h Abstract: This header contains the definition of the CProvider and the CFactory classes. It also includes WMI related declarations relevant to NTFRS. Author: Sudarshan Chitre (sudarc) , Mathew George (t-mattg) - 3-Aug-2000 --*/ #ifndef __PROVIDER_H_ #define __PROVIDER_H_ /* #include #include #include #include #include #include #include #include #include #include */ #include #include #include extern const CLSID CLSID_Provider; #define ODS OutputDebugString //#define ODS extern "C" { DWORD FrsWmiInitialize(); DWORD FrsWmiShutdown(); } // // Class definitions // class CProvider : public IWbemProviderInit, public IWbemServices, public IWbemEventProvider { public: CProvider(); ~CProvider(); // // Interface IUnknown // ULONG STDMETHODCALLTYPE AddRef(); ULONG STDMETHODCALLTYPE Release(); STDMETHOD(QueryInterface)(REFIID riid, void** ppv); // // Interface IWbemProviderInit // STDMETHOD(Initialize)( IN LPWSTR pszUser, IN LONG lFlags, IN LPWSTR pszNamespace, IN LPWSTR pszLocale, IN IWbemServices *pNamespace, IN IWbemContext *pCtx, IN IWbemProviderInitSink *pInitSink ); // // Interface IWbemEventProvider // // +++++++ Implemented +++++++++ STDMETHOD(ProvideEvents)( IWbemObjectSink __RPC_FAR *pSink, long lFlags ); // // Interface IWbemServices // // +++++++ Implemented +++++++ STDMETHOD(GetObjectAsync)( IN const BSTR bstrObjectPath, IN long lFlags, IN IWbemContext *pCtx, IN IWbemObjectSink *pResponseHandler); STDMETHOD(CreateInstanceEnumAsync)( IN const BSTR bstrClass, IN long lFlags, IN IWbemContext *pCtx, IN IWbemObjectSink *pResponseHandler); // --- NOT Implemented --- STDMETHOD(OpenNamespace)( IN const BSTR strNamespace, IN long lFlags, IN IWbemContext *pCtx, IN OUT IWbemServices **ppWorkingNamespace, IN OUT IWbemCallResult **ppResult) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(CancelAsyncCall)( IN IWbemObjectSink *pSink) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(QueryObjectSink)( IN long lFlags, OUT IWbemObjectSink **ppResponseHandler) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(GetObject)( IN const BSTR strObjectPath, IN long lFlags, IN IWbemContext *pCtx, IN OUT IWbemClassObject **ppObject, IN OUT IWbemCallResult **ppCallResult) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(PutClass)( IN IWbemClassObject *pObject, IN long lFlags, IN IWbemContext *pCtx, IN OUT IWbemCallResult **ppCallResult) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(PutClassAsync)( IN IWbemClassObject *pObject, IN long lFlags, IN IWbemContext *pCtx, IN IWbemObjectSink *pResponseHandler) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(DeleteClass)( IN const BSTR strClass, IN long lFlags, IN IWbemContext *pCtx, IN OUT IWbemCallResult **ppCallResult) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(DeleteClassAsync)( IN const BSTR strClass, IN long lFlags, IN IWbemContext *pCtx, IN IWbemObjectSink *pResponseHandler) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(CreateClassEnum)( IN const BSTR strSuperclass, IN long lFlags, IN IWbemContext *pCtx, OUT IEnumWbemClassObject **ppEnum) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(CreateClassEnumAsync)( IN const BSTR strSuperclass, IN long lFlags, IN IWbemContext *pCtx, IN IWbemObjectSink *pResponseHandler) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(PutInstance)( IN IWbemClassObject *pInst, IN long lFlags, IN IWbemContext *pCtx, IN OUT IWbemCallResult **ppCallResult) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(PutInstanceAsync)( IN IWbemClassObject *pInst, IN long lFlags, IN IWbemContext *pCtx, IN IWbemObjectSink *pResponseHandler) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(DeleteInstance)( IN const BSTR strObjectPath, IN long lFlags, IN IWbemContext *pCtx, IN OUT IWbemCallResult **ppCallResult) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(DeleteInstanceAsync)( IN const BSTR strObjectPath, IN long lFlags, IN IWbemContext *pCtx, IN IWbemObjectSink *pResponseHandler) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(CreateInstanceEnum)( IN const BSTR strClass, IN long lFlags, IN IWbemContext *pCtx, OUT IEnumWbemClassObject **ppEnum) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(ExecQuery)( IN const BSTR strQueryLanguage, IN const BSTR strQuery, IN long lFlags, IN IWbemContext *pCtx, OUT IEnumWbemClassObject **ppEnum) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(ExecQueryAsync)( IN const BSTR strQueryLanguage, IN const BSTR strQuery, IN long lFlags, IN IWbemContext *pCtx, IN IWbemObjectSink *pResponseHandler) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(ExecNotificationQuery)( IN const BSTR strQueryLanguage, IN const BSTR strQuery, IN long lFlags, IN IWbemContext *pCtx, OUT IEnumWbemClassObject **ppEnum) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(ExecNotificationQueryAsync)( IN const BSTR strQueryLanguage, IN const BSTR strQuery, IN long lFlags, IN IWbemContext *pCtx, IN IWbemObjectSink *pResponseHandler) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(ExecMethod)( IN const BSTR strObjectPath, IN const BSTR strMethodName, IN long lFlags, IN IWbemContext *pCtx, IN IWbemClassObject *pInParams, IN OUT IWbemClassObject **ppOutParams, IN OUT IWbemCallResult **ppCallResult) { return WBEM_E_NOT_SUPPORTED; }; STDMETHOD(ExecMethodAsync)( IN const BSTR strObjectPath, IN const BSTR strMethodName, IN long lFlags, IN IWbemContext *pCtx, IN IWbemClassObject *pInParams, IN IWbemObjectSink *pResponseHandler) { return WBEM_E_NOT_SUPPORTED; }; protected: // // Place my own methods right here ! // HRESULT CProvider::EnumNtFrsMemberStatus( IN IWbemContext *pCtx, IN IWbemObjectSink *pResponseHandler, IN const BSTR bstrFilterValue = NULL ); HRESULT CProvider::EnumNtFrsConnectionStatus( IN IWbemContext *pCtx, IN IWbemObjectSink *pResponseHandler, IN const BSTR bstrFilterValue = NULL ); // // Member variables. // IWbemServices *m_ipNamespace; IWbemClassObject *m_ipMicrosoftFrs_DfsMemberClassDef; IWbemClassObject *m_ipMicrosoftFrs_SysVolMemberClassDef; IWbemClassObject *m_ipMicrosoftFrs_DfsConnectionClassDef; IWbemClassObject *m_ipMicrosoftFrs_SysVolConnectionClassDef; // Event class definitions. (sample) IWbemClassObject *m_ipMicrosoftFrs_DfsMemberEventClassDef; IWbemObjectSink *m_pEventSink; // Event sink. int m_NumReplicaSets; ULONG m_dwRef; }; class CFactory : public IClassFactory { ULONG m_cRef; CLSID m_ClsId; public: CFactory(const CLSID & ClsId); ~CFactory(); // // IUnknown members // STDMETHODIMP QueryInterface(REFIID, LPVOID *); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // // IClassFactory members // STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID *); STDMETHODIMP LockServer(BOOL); }; #endif //__PROVIDER_H_