windows-nt/Source/XPSP1/NT/ds/netapi/svcimgs/ntrepl/frswmipv/frswmipv.h
2020-09-26 16:20:57 +08:00

327 lines
8.1 KiB
C++

/*++
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 <windows.h>
#include <objbase.h>
#include <comdef.h>
#include <initguid.h>
#include <wbemcli.h>
#include <wbemidl.h>
#include <stdio.h>
#include <string.h>
#include <wchar.h>
#include <tchar.h>
*/
#include <wbemcli.h>
#include <wbemidl.h>
#include <tchar.h>
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_