|
|
/*++
Copyright (C) 1996-2001 Microsoft Corporation
Module Name:
ProvFact.h
Abstract:
History:
--*/
#ifndef _Server_ProviderRegistrar_H
#define _Server_ProviderRegistrar_H
#include "Globals.h"
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
class CInterceptor_DecoupledClient ;
class CServerObject_ProviderRegistrar_Base : public IWbemDecoupledRegistrar { protected:
WmiAllocator &m_Allocator ;
HANDLE m_registrationEvent;
GUID m_Identity ;
BSTR m_Clsid ; BSTR m_User ; BSTR m_Locale ; BSTR m_Scope ; BSTR m_Registration ;
BOOL m_Registered ;
BYTE *m_MarshaledProxy ; DWORD m_MarshaledProxyLength ;
CInterceptor_DecoupledClient *m_Provider ;
HRESULT CreateInterceptor (
IWbemContext *a_Context , IUnknown *a_Unknown , BYTE *&a_MarshaledProxy , DWORD &a_MarshaledProxyLength , IUnknown *&a_MarshaledUnknown ) ;
HRESULT DirectUnRegister (
long a_Flags , IWbemContext *a_Context , LPCWSTR a_User , LPCWSTR a_Locale , LPCWSTR a_Registration , LPCWSTR a_Scope , GUID &a_Identity ) ;
HRESULT DirectRegister (
GUID &a_Identity , long a_Flags , IWbemContext *a_Context , LPCWSTR a_User , LPCWSTR a_Locale , LPCWSTR a_Registration , LPCWSTR a_Scope , IUnknown *a_Unknown , BYTE *a_MarshaledProxy , DWORD a_MarshaledProxyLength ) ;
HRESULT SaveToRegistry (
long a_Flags , IWbemContext *a_Context , LPCWSTR a_User , LPCWSTR a_Locale , LPCWSTR a_Registration , LPCWSTR a_Scope , IUnknown *a_Unknown , BYTE *a_MarshaledProxy , DWORD a_MarshaledProxyLength ) ;
protected:
public: /* Internal */
public: /* External */
CServerObject_ProviderRegistrar_Base ( WmiAllocator &a_Allocator ) ; ~CServerObject_ProviderRegistrar_Base () ;
HRESULT STDMETHODCALLTYPE Register (
long a_Flags , IWbemContext *a_Context , LPCWSTR a_User , LPCWSTR a_Locale , LPCWSTR a_Scope , LPCWSTR a_Registration , IUnknown *a_Unknown ) ;
HRESULT STDMETHODCALLTYPE UnRegister () ;
HRESULT Initialize () ; HRESULT AcquireLock(void); void ReleaseLock(void); };
inline void CServerObject_ProviderRegistrar_Base::ReleaseLock(void) { ReleaseMutex( m_registrationEvent ); }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
class CServerObject_ProviderRegistrar : public CServerObject_ProviderRegistrar_Base { private:
long m_ReferenceCount ;
protected:
public: /* Internal */
public: /* External */
CServerObject_ProviderRegistrar ( WmiAllocator &a_Allocator ) ; ~CServerObject_ProviderRegistrar () ;
//IUnknown members
STDMETHODIMP QueryInterface ( REFIID , LPVOID FAR * ) ; STDMETHODIMP_( ULONG ) AddRef () ; STDMETHODIMP_( ULONG ) Release () ; };
#endif // _Server_ProviderRegistrar_H
|