|
|
/*++
Copyright (C) 1996-2001 Microsoft Corporation
Module Name:
ProvSubS.h
Abstract:
History:
--*/
#ifndef _Server_ProviderSubSystem_H
#define _Server_ProviderSubSystem_H
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
#include "ProvCache.h"
class CInterceptor_IWmiProvSSSink : public _IWmiProvSSSink , public VoidPointerContainerElement { private:
_IWmiProvSSSink *m_InterceptedSink ;
protected: public:
CInterceptor_IWmiProvSSSink (
_IWmiProvSSSink *a_InterceptedSink , CWbemGlobal_VoidPointerController *a_Controller ) ;
~CInterceptor_IWmiProvSSSink () ;
public:
//Non-delegating object IUnknown
STDMETHODIMP QueryInterface ( REFIID , LPVOID FAR * ) ; STDMETHODIMP_( ULONG ) AddRef () ; STDMETHODIMP_( ULONG ) Release () ;
HRESULT STDMETHODCALLTYPE Synchronize (
long a_Flags , IWbemContext *a_Context , LPCWSTR a_Namespace , LPCWSTR a_Provider ) ; } ;
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
class CServerObject_BindingFactory ; class CServerObject_ProviderSubSystem : public _IWmiProvSS , public _IWmiCoreWriteHook , public _IWmiProviderConfiguration , public IWbemShutdown , public ProvSubSysContainerElement , public CWbemGlobal_IWmiFactoryController
{ public:
class InternalInterface : public _IWmiCoreWriteHook { private:
CServerObject_ProviderSubSystem *m_This ;
public:
InternalInterface ( CServerObject_ProviderSubSystem *a_This ) : m_This ( a_This ) { }
STDMETHODIMP QueryInterface (
REFIID iid , LPVOID FAR *iplpv ) { *iplpv = NULL ;
if ( iid == IID_IUnknown ) { *iplpv = ( LPVOID ) this ; } else if ( iid == IID__IWmiCoreWriteHook ) { *iplpv = ( LPVOID ) ( _IWmiCoreWriteHook * ) this ; }
if ( *iplpv ) { ( ( LPUNKNOWN ) *iplpv )->AddRef () ;
return ResultFromScode ( S_OK ) ; } else { return ResultFromScode ( E_NOINTERFACE ) ; } }
STDMETHODIMP_( ULONG ) AddRef () { return m_This->ProvSubSysContainerElement :: NonCyclicAddRef () ; }
STDMETHODIMP_( ULONG ) Release () { return m_This->ProvSubSysContainerElement :: NonCyclicRelease () ; }
HRESULT STDMETHODCALLTYPE PrePut (
long a_Flags , long a_UserFlags , IWbemContext *a_Context , IWbemPath *a_Path , LPCWSTR a_Namespace , LPCWSTR a_Class , _IWmiObject *a_Copy ) { return m_This->PrePut (
a_Flags , a_UserFlags , a_Context , a_Path , a_Namespace , a_Class , a_Copy ) ; }
HRESULT STDMETHODCALLTYPE PostPut (
long a_Flags , HRESULT hRes, IWbemContext *a_Context , IWbemPath *a_Path , LPCWSTR a_Namespace , LPCWSTR a_Class , _IWmiObject *a_New , _IWmiObject *a_Old ) { return m_This->PostPut (
a_Flags , hRes, a_Context , a_Path , a_Namespace , a_Class , a_New , a_Old ) ; }
HRESULT STDMETHODCALLTYPE PreDelete (
long a_Flags , long a_UserFlags , IWbemContext *a_Context , IWbemPath *a_Path, LPCWSTR a_Namespace, LPCWSTR a_Class ) { return m_This->PreDelete (
a_Flags , a_UserFlags , a_Context , a_Path, a_Namespace, a_Class ) ; }
HRESULT STDMETHODCALLTYPE PostDelete (
long a_Flags , HRESULT hRes, IWbemContext *a_Context , IWbemPath *a_Path, LPCWSTR a_Namespace, LPCWSTR a_Class, _IWmiObject *a_Old ) { return m_This->PostDelete (
a_Flags , hRes, a_Context , a_Path, a_Namespace, a_Class, a_Old ) ; } } ;
InternalInterface m_Internal ;
void CallBackInternalRelease () ;
private:
_IWmiCoreServices *m_Core ;
WmiAllocator &m_Allocator ;
CWbemGlobal_VoidPointerController *m_SinkController ;
wchar_t *Strip_Slash ( wchar_t *a_String ) ; wchar_t *Strip_Server ( wchar_t *a_String , wchar_t *&a_FreeString ) ;
HRESULT IsChild_Namespace ( wchar_t *a_Left , wchar_t *a_Right ) ;
HRESULT GetNamespaceServerPath (
IWbemPath *a_Namespace , wchar_t *&a_ServerNamespacePath ) ;
HRESULT Cache (
LPCWSTR a_Namespace , IWbemPath *a_NamespacePath , CServerObject_BindingFactory *a_Factory , BindingFactoryCacheKey &a_Key , REFIID a_RIID , void **a_Interface ) ;
HRESULT CreateAndCache (
IWbemServices *a_Core , LONG a_Flags , IWbemContext *a_Context , LPCWSTR a_Namespace , IWbemPath *a_NamespacePath , BindingFactoryCacheKey &a_Key , REFIID a_RIID , void **a_Interface ) ;
HRESULT GetProvider (
LPCWSTR a_Class , IWbemPath *a_Path , IWbemClassObject *a_Object , LPWSTR &a_Provider ) ;
HRESULT Call_Load (
long a_Flags , IWbemContext *a_Context , LPCWSTR a_Class , LPCWSTR a_Path , LPCWSTR a_Method, IWbemClassObject *a_InParams, IWbemObjectSink *a_Sink ) ;
HRESULT GetDeleteInfo (
IWbemClassObject *a_OldObject , LPCWSTR a_Class , IWbemPath *a_Path , LPWSTR &a_OutClass , LPWSTR &a_OutStringPath , IWbemPath *&a_OutPathObject ) ;
HRESULT PostDelete_ProviderRegistration (
long a_Flags , HRESULT hRes, IWbemContext *a_Context , IWbemPath *a_Path, LPCWSTR a_PathString , LPCWSTR a_Namespace, LPCWSTR a_Class, IWbemClassObject *a_Old
) ;
HRESULT PostDelete_Namespace (
long a_Flags , HRESULT hRes, IWbemContext *a_Context , IWbemPath *a_Path, LPCWSTR a_PathString , LPCWSTR a_Namespace, LPCWSTR a_Class, IWbemClassObject *a_Old ) ;
QueryPreprocessor :: QuadState IsA (
IWbemClassObject *a_Left , wchar_t *a_Right ) ;
HRESULT VerifySecurity (
IWbemContext *a_Context , const BSTR a_Provider , const BSTR a_NamespacePath ) ;
HRESULT GetPath (
IWbemClassObject *a_Object , IWbemPath *&a_Path , LPWSTR &a_PathText ) ;
static HRESULT ReportEvent (
CServerObject_ProviderRegistrationV1 &a_Registration , const BSTR a_NamespacePath ) ;
HRESULT ClearSinkController () ;
protected: public:
CServerObject_ProviderSubSystem ( WmiAllocator &a_Allocator , CWbemGlobal_IWmiProvSubSysController *a_Controller ) ; ~CServerObject_ProviderSubSystem ( void ) ;
HRESULT GetWmiRepositoryService (
IWbemPath *a_Namespace , const BSTR a_User , const BSTR a_Locale , IWbemServices *&a_Service ) ;
HRESULT GetWmiRepositoryService (
const BSTR a_Namespace , const BSTR a_User , const BSTR a_Locale , IWbemServices *&a_Service ) ;
HRESULT GetWmiService (
IWbemPath *a_Namespace , const BSTR a_User , const BSTR a_Locale , IWbemServices *&a_Service ) ;
HRESULT GetWmiService (
const BSTR a_Namespace , const BSTR a_User , const BSTR a_Locale , IWbemServices *&a_Service ) ;
HRESULT ForwardReload (
long a_Flags , IWbemContext *a_Context , LPCWSTR a_Namespace , LPCWSTR a_Provider ) ;
//IUnknown members
STDMETHODIMP QueryInterface ( REFIID , LPVOID FAR * ) ; STDMETHODIMP_( ULONG ) AddRef () ; STDMETHODIMP_( ULONG ) Release () ;
// IWmi_ProviderSubSystem members
HRESULT STDMETHODCALLTYPE Create (
IWbemServices *a_Core , LONG a_Flags , IWbemContext *a_Context , LPCWSTR a_Namespace , REFIID a_RIID , void **a_Interface ) ;
HRESULT STDMETHODCALLTYPE CreateRefresherManager (
IWbemServices *a_Core , LONG a_Flags , IWbemContext *a_Context , REFIID a_RIID , void **a_Interface ) ;
HRESULT STDMETHODCALLTYPE RegisterNotificationSink (
LONG a_Flags , IWbemContext *a_Context , _IWmiProvSSSink *a_Sink ) ;
HRESULT STDMETHODCALLTYPE UnRegisterNotificationSink (
LONG a_Flags , IWbemContext *a_Context , _IWmiProvSSSink *a_Sink ) ;
// IWmi_Initialize members
HRESULT STDMETHODCALLTYPE Initialize (
LONG a_Flags , IWbemContext *a_Context , _IWmiCoreServices *a_Core ) ;
// IWmi_UnInitialize members
HRESULT STDMETHODCALLTYPE Shutdown (
LONG a_Flags , ULONG a_MaxMilliSeconds , IWbemContext *a_Context ) ;
WmiStatusCode Strobe ( ULONG &a_NextStrobeDelta ) ;
WmiStatusCode StrobeBegin ( const ULONG &a_Period ) ;
/* _IWmiProviderConfiguration methods */
HRESULT STDMETHODCALLTYPE Get (
IWbemServices *a_Service , long a_Flags , IWbemContext *a_Context , LPCWSTR a_Class , LPCWSTR a_Path , IWbemObjectSink *a_Sink ) ;
HRESULT STDMETHODCALLTYPE Set (
IWbemServices *a_Service , long a_Flags , IWbemContext *a_Context , LPCWSTR a_Provider , LPCWSTR a_Class , LPCWSTR a_Path , IWbemClassObject *a_OldObject , IWbemClassObject *a_NewObject ) ;
HRESULT STDMETHODCALLTYPE Deleted (
IWbemServices *a_Service , long a_Flags , IWbemContext *a_Context , LPCWSTR a_Provider , LPCWSTR a_Class , LPCWSTR a_Path , IWbemClassObject *a_Object ) ;
HRESULT STDMETHODCALLTYPE Enumerate (
IWbemServices *a_Service , long a_Flags , IWbemContext *a_Context , LPCWSTR a_Class , IWbemObjectSink *a_Sink ) ;
HRESULT STDMETHODCALLTYPE Shutdown (
IWbemServices *a_Service , long a_Flags , IWbemContext *a_Context , LPCWSTR a_Provider , ULONG a_MilliSeconds ) ;
HRESULT STDMETHODCALLTYPE Call (
IWbemServices *a_Service , long a_Flags , IWbemContext *a_Context , LPCWSTR a_Class , LPCWSTR a_Path , LPCWSTR a_Method, IWbemClassObject *a_InParams, IWbemObjectSink *a_Sink ) ;
HRESULT STDMETHODCALLTYPE Query (
IWbemServices *a_Service , long a_Flags , IWbemContext *a_Context , WBEM_PROVIDER_CONFIGURATION_CLASS_ID a_ClassIdentifier , WBEM_PROVIDER_CONFIGURATION_PROPERTY_ID a_PropertyIdentifier , VARIANT *a_Value ) ;
HRESULT STDMETHODCALLTYPE PrePut (
long a_Flags , long a_UserFlags , IWbemContext *a_Context , IWbemPath *a_Path , LPCWSTR a_Namespace , LPCWSTR a_Class , _IWmiObject *a_Copy ) ;
HRESULT STDMETHODCALLTYPE PostPut (
long a_Flags , HRESULT hRes, IWbemContext *a_Context , IWbemPath *a_Path , LPCWSTR a_Namespace , LPCWSTR a_Class , _IWmiObject *a_New , _IWmiObject *a_Old ) ;
HRESULT STDMETHODCALLTYPE PreDelete (
long a_Flags , long a_UserFlags , IWbemContext *a_Context , IWbemPath *a_Path, LPCWSTR a_Namespace, LPCWSTR a_Class ) ;
HRESULT STDMETHODCALLTYPE PostDelete (
long a_Flags , HRESULT hRes, IWbemContext *a_Context , IWbemPath *a_Path, LPCWSTR a_Namespace, LPCWSTR a_Class, _IWmiObject *a_Old ) ; };
#endif // _Server_ProviderSubSystem_H
|