|
|
/*++
Copyright (C) 1996-2001 Microsoft Corporation
Module Name:
ProvResv.H
Abstract:
History:
--*/
#ifndef _Server_DecoupledAggregator_IWbemProvider_H
#define _Server_DecoupledAggregator_IWbemProvider_H
#include "ProvRegDeCoupled.h"
#include "ProvWsv.h"
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
class CDecoupled_ProviderSubsystemRegistrar : public _IWmiProviderSubsystemRegistrar { private:
LONG m_ReferenceCount ; //Object reference count
WmiAllocator &m_Allocator ; CServerObject_ProviderSubSystem *m_SubSystem ;
HRESULT SaveToRegistry (
long a_Flags , IWbemContext *a_Context , LPCWSTR a_User , LPCWSTR a_Locale , LPCWSTR a_Scope , LPCWSTR a_Registration , DWORD a_ProcessIdentifier , GUID &a_Identity , IUnknown *a_Unknown ) ;
HRESULT ValidateClientSecurity (
IWbemContext *a_Context , LPCWSTR a_Scope , LPCWSTR a_Registration , IWbemServices *a_Service ) ;
HRESULT CacheProvider (
CServerObject_ProviderSubSystem *a_SubSystem , IWbemContext *a_Context , CServerObject_DecoupledClientRegistration_Element &a_Element , IUnknown *a_Unknown ) ;
HRESULT Load (
CServerObject_ProviderSubSystem *a_SubSystem , IWbemContext *a_Context , CServerObject_DecoupledClientRegistration_Element &a_Element ) ;
HRESULT MarshalRegistration (
IUnknown *a_Unknown , BYTE *&a_MarshaledProxy , DWORD &a_MarshaledProxyLength ) ;
HRESULT SaveToRegistry (
IUnknown *a_Unknown , BYTE *a_MarshaledProxy , DWORD a_MarshaledProxyLength ) ;
protected: public:
CDecoupled_ProviderSubsystemRegistrar ( WmiAllocator &a_Allocator , CServerObject_ProviderSubSystem *a_SubSystem ) ; ~CDecoupled_ProviderSubsystemRegistrar () ;
HRESULT Load (
CServerObject_ProviderSubSystem *a_SubSystem , IWbemContext *a_Context ) ;
HRESULT Save () ; HRESULT Delete () ;
public:
//Non-delegating object IUnknown
STDMETHODIMP QueryInterface ( REFIID , LPVOID FAR * ) ; STDMETHODIMP_( ULONG ) AddRef () ; STDMETHODIMP_( ULONG ) Release () ;
HRESULT STDMETHODCALLTYPE Register (
long a_Flags , IWbemContext *a_Context , LPCWSTR a_User , LPCWSTR a_Locale , LPCWSTR a_Registration , LPCWSTR a_Scope , DWORD a_ProcessIdentifier , IUnknown *a_Unknown , GUID a_Identity ) ;
HRESULT STDMETHODCALLTYPE UnRegister (
long a_Flags , IWbemContext *a_Context , LPCWSTR a_User , LPCWSTR a_Locale , LPCWSTR a_Scope , LPCWSTR a_Registration , GUID a_Identity ) ; } ;
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
class CDecoupledAggregator_IWbemProvider : public IWbemServices , public IWbemEventProvider , public IWbemEventProviderQuerySink , public IWbemEventProviderSecurity , public IWbemProviderIdentity , public IWbemEventConsumerProviderEx , public _IWmiProviderSubsystemRegistrar , public _IWmiProviderInitialize , public IWbemShutdown , public _IWmiProviderCache , public ServiceCacheElement , public CWbemGlobal_IWmiObjectSinkController
{ private:
LONG m_ReferenceCount ; //Object reference count
WmiAllocator &m_Allocator ;
CWbemGlobal_IWbemSyncProviderController *m_Controller ;
_IWmiProviderFactory *m_Factory ;
IWbemObjectSink *m_Sink ; IWbemServices *m_CoreRepositoryStub ; IWbemServices *m_CoreFullStub ; IWbemPath *m_NamespacePath ;
BSTR m_User ; BSTR m_Locale ; BSTR m_Namespace ;
IWbemClassObject *m_ExtendedStatusObject ; CServerObject_ProviderRegistrationV1 *m_Registration ;
LONG m_Initialized ; HRESULT m_InitializeResult ; HANDLE m_InitializedEvent ; IWbemContext *m_InitializationContext ;
private:
HRESULT InitializeProvider (
IUnknown *a_Unknown , IWbemServices *a_Stub , wchar_t *a_NamespacePath , LONG a_Flags , IWbemContext *a_Context , LPCWSTR a_User , LPCWSTR a_Locale , LPCWSTR a_Scope , CServerObject_ProviderRegistrationV1 &a_Registration ) ;
HRESULT CreateSyncProvider (
IUnknown *a_ServerSideProvider , IWbemServices *a_Stub , wchar_t *a_NamespacePath , LONG a_Flags , IWbemContext *a_Context , LPCWSTR a_User , LPCWSTR a_Locale , LPCWSTR a_Scope , CServerObject_ProviderRegistrationV1 &a_Registration , GUID a_Identity , CInterceptor_IWbemDecoupledProvider *&a_Interceptor ) ;
HRESULT SetStatus (
LPWSTR a_Operation , LPWSTR a_Parameters , LPWSTR a_Description , HRESULT a_Result , IWbemObjectSink *a_Sink ) ;
public:
CDecoupledAggregator_IWbemProvider (
WmiAllocator &m_Allocator , CWbemGlobal_IWmiProviderController *a_Controller , _IWmiProviderFactory *a_Factory , IWbemServices *a_CoreRepositoryStub , IWbemServices *a_CoreFullStub , const ProviderCacheKey &a_Key , const ULONG &a_Period , IWbemContext *a_InitializationContext , CServerObject_ProviderRegistrationV1 &a_Registration ) ; ~CDecoupledAggregator_IWbemProvider () ;
HRESULT SetInitialized ( HRESULT a_InitializeResult ) ;
HRESULT IsIndependant ( IWbemContext *a_Context ) ;
HRESULT AbnormalShutdown ( IUnknown *t_Element ) ;
public:
//Non-delegating object IUnknown
STDMETHODIMP QueryInterface ( REFIID , LPVOID FAR * ) ; STDMETHODIMP_( ULONG ) AddRef () ; STDMETHODIMP_( ULONG ) Release () ;
/* IWbemServices methods */
HRESULT STDMETHODCALLTYPE OpenNamespace (
const BSTR a_Namespace , long a_Flags , IWbemContext *a_Context , IWbemServices **a_Service , IWbemCallResult **a_CallResult ) ; HRESULT STDMETHODCALLTYPE CancelAsyncCall (
IWbemObjectSink *a_Sink ) ; HRESULT STDMETHODCALLTYPE QueryObjectSink (
long a_Flags , IWbemObjectSink **a_Sink ) ; HRESULT STDMETHODCALLTYPE GetObject (
const BSTR a_ObjectPath , long a_Flags , IWbemContext *a_Context , IWbemClassObject **ppObject , IWbemCallResult **a_CallResult ) ; HRESULT STDMETHODCALLTYPE GetObjectAsync ( const BSTR a_ObjectPath , long a_Flags , IWbemContext *a_Context , IWbemObjectSink *a_Sink ) ; HRESULT STDMETHODCALLTYPE PutClass (
IWbemClassObject *a_Object , long a_Flags , IWbemContext *a_Context , IWbemCallResult **a_CallResult ) ; HRESULT STDMETHODCALLTYPE PutClassAsync (
IWbemClassObject *a_Object , long a_Flags , IWbemContext *a_Context , IWbemObjectSink *a_Sink ) ; HRESULT STDMETHODCALLTYPE DeleteClass (
const BSTR a_Class , long a_Flags , IWbemContext *a_Context , IWbemCallResult **a_CallResult ) ; HRESULT STDMETHODCALLTYPE DeleteClassAsync (
const BSTR a_Class , long a_Flags , IWbemContext *a_Context , IWbemObjectSink *a_Sink ) ; HRESULT STDMETHODCALLTYPE CreateClassEnum (
const BSTR a_Superclass , long a_Flags , IWbemContext *a_Context , IEnumWbemClassObject **a_Enum ) ; HRESULT STDMETHODCALLTYPE CreateClassEnumAsync (
const BSTR a_Superclass , long a_Flags , IWbemContext *a_Context , IWbemObjectSink *a_Sink ) ; HRESULT STDMETHODCALLTYPE PutInstance (
IWbemClassObject *a_Instance , long a_Flags , IWbemContext *a_Context , IWbemCallResult **a_CallResult ) ; HRESULT STDMETHODCALLTYPE PutInstanceAsync (
IWbemClassObject *a_Instance , long a_Flags , IWbemContext *a_Context , IWbemObjectSink *a_Sink ) ; HRESULT STDMETHODCALLTYPE DeleteInstance (
const BSTR a_ObjectPath , long a_Flags , IWbemContext *a_Context , IWbemCallResult **a_CallResult ) ; HRESULT STDMETHODCALLTYPE DeleteInstanceAsync (
const BSTR a_ObjectPath, long a_Flags, IWbemContext *a_Context , IWbemObjectSink *a_Sink ) ; HRESULT STDMETHODCALLTYPE CreateInstanceEnum (
const BSTR a_Class , long a_Flags , IWbemContext *a_Context , IEnumWbemClassObject **a_Enum ) ; HRESULT STDMETHODCALLTYPE CreateInstanceEnumAsync (
const BSTR a_Class , long a_Flags , IWbemContext *a_Context , IWbemObjectSink *a_Sink ) ; HRESULT STDMETHODCALLTYPE ExecQuery (
const BSTR a_QueryLanguage, const BSTR a_Query, long a_Flags , IWbemContext *a_Context , IEnumWbemClassObject **a_Enum ) ; HRESULT STDMETHODCALLTYPE ExecQueryAsync (
const BSTR a_QueryLanguage , const BSTR a_Query , long a_Flags , IWbemContext *a_Context , IWbemObjectSink *a_Sink ) ; HRESULT STDMETHODCALLTYPE ExecNotificationQuery (
const BSTR a_QueryLanguage , const BSTR a_Query , long a_Flags , IWbemContext *a_Context , IEnumWbemClassObject **a_Enum ) ; HRESULT STDMETHODCALLTYPE ExecNotificationQueryAsync (
const BSTR a_QueryLanguage , const BSTR a_Query , long a_Flags , IWbemContext *a_Context , IWbemObjectSink *a_Sink ) ; HRESULT STDMETHODCALLTYPE ExecMethod (
const BSTR a_ObjectPath , const BSTR a_MethodName , long a_Flags , IWbemContext *a_Context , IWbemClassObject *a_InParams , IWbemClassObject **a_OutParams , IWbemCallResult **a_CallResult ) ; HRESULT STDMETHODCALLTYPE ExecMethodAsync (
const BSTR a_ObjectPath , const BSTR a_MethodName , long a_Flags , IWbemContext *a_Context , IWbemClassObject *a_InParams , IWbemObjectSink *a_Sink ) ;
/* IWbemEventProvider */
HRESULT STDMETHODCALLTYPE ProvideEvents (
IWbemObjectSink *a_Sink , long a_Flags ) ;
/* IWbemEventProviderQuerySink */
HRESULT STDMETHODCALLTYPE NewQuery (
unsigned long a_Id , WBEM_WSTR a_QueryLanguage , WBEM_WSTR a_Query );
HRESULT STDMETHODCALLTYPE CancelQuery (
unsigned long a_Id ) ;
/* IWbemEventProviderSecurity */
HRESULT STDMETHODCALLTYPE AccessCheck (
WBEM_CWSTR a_QueryLanguage , WBEM_CWSTR a_Query , long a_SidLength , const BYTE *a_Sid ) ;
/* IWbemProviderIdentity */
HRESULT STDMETHODCALLTYPE SetRegistrationObject (
long a_Flags , IWbemClassObject *a_ProviderRegistration ) ;
/* IWbemEventConsumerProvider */
HRESULT STDMETHODCALLTYPE FindConsumer (
IWbemClassObject *a_LogicalConsumer , IWbemUnboundObjectSink **a_Consumer );
/* IWbemEventConsumerProviderEx */
HRESULT STDMETHODCALLTYPE ValidateSubscription (
IWbemClassObject *a_LogicalConsumer ) ;
HRESULT STDMETHODCALLTYPE Register (
long a_Flags , IWbemContext *a_Context , LPCWSTR a_Scope , LPCWSTR a_User , LPCWSTR a_Locale , LPCWSTR a_Registration , DWORD a_ProcessIdentifier , IUnknown *a_Unknown , GUID a_Identity ) ;
HRESULT STDMETHODCALLTYPE UnRegister (
long a_Flags , IWbemContext *a_Context , LPCWSTR a_User , LPCWSTR a_Locale , LPCWSTR a_Scope , LPCWSTR a_Registration , GUID a_Identity ) ;
HRESULT STDMETHODCALLTYPE Initialize (
long a_Flags , IWbemContext *a_Context , GUID *a_TransactionIdentifier, LPCWSTR a_User, LPCWSTR a_Locale, LPCWSTR a_Namespace , IWbemServices *a_Repository , IWbemServices *a_Service , IWbemProviderInitSink *a_Sink
) ;
HRESULT STDMETHODCALLTYPE WaitProvider ( IWbemContext *a_Context , ULONG a_Timeout ) ;
HRESULT STDMETHODCALLTYPE GetInitializeResult () { return m_InitializeResult ; }
HRESULT STDMETHODCALLTYPE GetHosting ( ULONG *a_Value ) { if ( a_Value ) { *a_Value = e_Hosting_WmiCore ; return S_OK ; } else { return WBEM_E_INVALID_PARAMETER ; } }
HRESULT STDMETHODCALLTYPE GetHostingGroup ( BSTR *a_Value ) { if ( a_Value ) { *a_Value = NULL ;
return S_OK ; } else { return WBEM_E_INVALID_PARAMETER ; } }
HRESULT STDMETHODCALLTYPE IsInternal ( BOOL *a_Value ) { if ( a_Value ) { *a_Value = TRUE ; return S_OK ; } else { return WBEM_E_INVALID_PARAMETER ; } }
HRESULT STDMETHODCALLTYPE IsPerUserInitialization ( BOOL *a_Value ) { if ( a_Value ) { *a_Value = FALSE ; return S_OK ; } else { return WBEM_E_INVALID_PARAMETER ; } }
HRESULT STDMETHODCALLTYPE IsPerLocaleInitialization ( BOOL *a_Value ) { if ( a_Value ) { *a_Value = FALSE ; return S_OK ; } else { return WBEM_E_INVALID_PARAMETER ; } }
/* _IWmiProviderCache */
HRESULT STDMETHODCALLTYPE Expel (
long a_Flags , IWbemContext *a_Context ) ;
HRESULT STDMETHODCALLTYPE Unload (
long a_Flags , IWbemContext *a_Context ) ;
HRESULT STDMETHODCALLTYPE Load (
long a_Flags , IWbemContext *a_Context ) ;
HRESULT STDMETHODCALLTYPE ForceReload () ;
HRESULT STDMETHODCALLTYPE Shutdown (
LONG a_Flags , ULONG a_MaxMilliSeconds , IWbemContext *a_Context ) ; } ;
#endif // _Server_DecoupledAggregator_IWbemProvider_H
|