|
|
/*++
Copyright (C) 1996-2001 Microsoft Corporation
Module Name:
XXXX
Abstract:
History:
--*/
#include "PreComp.h"
#include <wbemint.h>
#include "Globals.h"
#include "CGlobals.h"
#include "ProvObSk.h"
#include "ProvInSk.h"
#include "ProvWsvS.h"
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
CInterceptor_IWbemServices_Stub :: CInterceptor_IWbemServices_Stub (
WmiAllocator &a_Allocator , IWbemServices *a_Service
) : m_ReferenceCount ( 0 ) , m_CoreService ( a_Service ) , m_RefreshingService ( NULL ) , m_GateClosed ( FALSE ) , m_InProgress ( 0 ) , m_Allocator ( a_Allocator ) , m_ProxyContainer ( a_Allocator , 3 , MAX_PROXIES ), m_CriticalSection(NOTHROW_LOCK) { InterlockedIncrement ( & DecoupledProviderSubSystem_Globals :: s_CInterceptor_IWbemServices_Stub_ObjectsInProgress ) ; InterlockedIncrement (&DecoupledProviderSubSystem_Globals :: s_ObjectsInProgress) ;
HRESULT t_Result = m_CoreService->QueryInterface ( IID_IWbemRefreshingServices , ( void ** ) & m_RefreshingService ) ;
m_CoreService->AddRef () ;
WmiStatusCode t_StatusCode = m_ProxyContainer.Initialize () ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
CInterceptor_IWbemServices_Stub :: ~CInterceptor_IWbemServices_Stub () {
if ( m_CoreService ) { m_CoreService->Release () ; }
if ( m_RefreshingService ) { m_RefreshingService->Release () ; }
InterlockedDecrement ( & DecoupledProviderSubSystem_Globals :: s_CInterceptor_IWbemServices_Stub_ObjectsInProgress ) ; InterlockedDecrement (&DecoupledProviderSubSystem_Globals :: s_ObjectsInProgress) ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
STDMETHODIMP_(ULONG) CInterceptor_IWbemServices_Stub :: AddRef ( void ) { ULONG t_ReferenceCount = InterlockedIncrement ( & m_ReferenceCount ) ; return t_ReferenceCount ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
STDMETHODIMP_(ULONG) CInterceptor_IWbemServices_Stub :: Release ( void ) { ULONG t_ReferenceCount = InterlockedDecrement ( & m_ReferenceCount ) ; if ( t_ReferenceCount == 0 ) { delete this ; return 0 ; } else { return t_ReferenceCount; } }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
STDMETHODIMP CInterceptor_IWbemServices_Stub :: QueryInterface (
REFIID iid , LPVOID FAR *iplpv ) { *iplpv = NULL ;
if ( iid == IID_IUnknown ) { *iplpv = static_cast<IWbemServices *>(this) ; } else if ( iid == IID_IWbemServices ) { *iplpv = static_cast<IWbemServices *>(this) ; } else if ( iid == IID_IWbemRefreshingServices ) { *iplpv = static_cast<IWbemRefreshingServices *>(this) ; } else if ( iid == IID_IWbemShutdown ) { *iplpv = static_cast<IWbemShutdown *>(this) ; }
if ( *iplpv ) { reinterpret_cast<IUnknown*>(*iplpv)->AddRef () ;
return ResultFromScode ( S_OK ) ; } else { return ResultFromScode ( E_NOINTERFACE ) ; } }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub::OpenNamespace (
const BSTR a_ObjectPath , long a_Flags , IWbemContext *a_Context , IWbemServices **a_NamespaceService , IWbemCallResult **a_CallResult ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->OpenNamespace (
a_ObjectPath, a_Flags, a_Context , a_NamespaceService, a_CallResult ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_Service->OpenNamespace (
a_ObjectPath, a_Flags, a_Context , a_NamespaceService, a_CallResult ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: CancelAsyncCall ( IWbemObjectSink *a_Sink ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->CancelAsyncCall (
a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_Service->CancelAsyncCall (
a_Sink ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: QueryObjectSink (
long a_Flags , IWbemObjectSink **a_Sink ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->QueryObjectSink (
a_Flags, a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_Service->QueryObjectSink (
a_Flags, a_Sink ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: GetObject ( const BSTR a_ObjectPath , long a_Flags , IWbemContext *a_Context , IWbemClassObject **a_Object , IWbemCallResult **a_CallResult ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->GetObject (
a_ObjectPath, a_Flags, a_Context , a_Object, a_CallResult ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { if ( a_ObjectPath ) { BSTR t_ObjectPath = SysAllocString ( a_ObjectPath ) ; if ( t_ObjectPath ) { t_Result = t_Service->GetObject (
t_ObjectPath, a_Flags, a_Context , a_Object, a_CallResult ) ;
SysFreeString ( t_ObjectPath ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; } } else { t_Result = t_Service->GetObject (
a_ObjectPath, a_Flags, a_Context , a_Object, a_CallResult ) ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: GetObjectAsync ( const BSTR a_ObjectPath , long a_Flags , IWbemContext *a_Context , IWbemObjectSink *a_Sink ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->GetObjectAsync (
a_ObjectPath, a_Flags, a_Context , a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_ObjectPath = SysAllocString ( a_ObjectPath ) ; if ( t_ObjectPath ) { t_Result = t_Service->GetObjectAsync (
t_ObjectPath, a_Flags, a_Context , a_Sink ) ;
SysFreeString ( t_ObjectPath ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: PutClass ( IWbemClassObject *a_Object , long a_Flags , IWbemContext *a_Context , IWbemCallResult **a_CallResult ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->PutClass (
a_Object, a_Flags, a_Context, a_CallResult ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_Service->PutClass (
a_Object, a_Flags, a_Context, a_CallResult ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: PutClassAsync ( IWbemClassObject *a_Object , long a_Flags , IWbemContext FAR *a_Context , IWbemObjectSink *a_Sink ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->PutClassAsync (
a_Object, a_Flags, a_Context , a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_Service->PutClassAsync (
a_Object, a_Flags, a_Context , a_Sink ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: DeleteClass ( const BSTR a_Class , long a_Flags , IWbemContext *a_Context , IWbemCallResult **a_CallResult ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->DeleteClass (
a_Class, a_Flags, a_Context, a_CallResult ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_Class = SysAllocString ( a_Class ) ; if ( t_Class ) { t_Result = t_Service->DeleteClass (
t_Class, a_Flags, a_Context, a_CallResult ) ;
SysFreeString ( t_Class ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: DeleteClassAsync ( const BSTR a_Class , long a_Flags, IWbemContext *a_Context , IWbemObjectSink *a_Sink ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->DeleteClassAsync (
a_Class , a_Flags , a_Context , a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_Class = SysAllocString ( a_Class ) ; if ( t_Class ) { t_Result = t_Service->DeleteClassAsync (
t_Class , a_Flags , a_Context , a_Sink ) ;
SysFreeString ( t_Class ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: CreateClassEnum (
const BSTR a_Superclass , long a_Flags, IWbemContext *a_Context , IEnumWbemClassObject **a_Enum ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->CreateClassEnum (
a_Superclass, a_Flags, a_Context, a_Enum ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_Superclass = SysAllocString ( a_Superclass ) ; if ( t_Superclass ) { t_Result = t_Service->CreateClassEnum (
t_Superclass, a_Flags, a_Context, a_Enum ) ;
SysFreeString ( t_Superclass ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
SCODE CInterceptor_IWbemServices_Stub :: CreateClassEnumAsync (
const BSTR a_Superclass , long a_Flags , IWbemContext *a_Context , IWbemObjectSink *a_Sink ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->CreateClassEnumAsync (
a_Superclass, a_Flags, a_Context, a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_Superclass = SysAllocString ( a_Superclass ) ; if ( t_Superclass ) { t_Result = t_Service->CreateClassEnumAsync (
t_Superclass, a_Flags, a_Context, a_Sink ) ;
SysFreeString ( t_Superclass ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: PutInstance (
IWbemClassObject *a_Instance, long a_Flags, IWbemContext *a_Context, IWbemCallResult **a_CallResult ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->PutInstance (
a_Instance, a_Flags, a_Context, a_CallResult ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_Service->PutInstance (
a_Instance, a_Flags, a_Context, a_CallResult ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: PutInstanceAsync ( IWbemClassObject *a_Instance, long a_Flags, IWbemContext *a_Context, IWbemObjectSink *a_Sink ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->PutInstanceAsync (
a_Instance, a_Flags, a_Context, a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_Service->PutInstanceAsync (
a_Instance, a_Flags, a_Context, a_Sink ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: DeleteInstance (
const BSTR a_ObjectPath, long a_Flags, IWbemContext *a_Context, IWbemCallResult **a_CallResult ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->DeleteInstance (
a_ObjectPath, a_Flags, a_Context, a_CallResult ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_ObjectPath = SysAllocString ( a_ObjectPath ) ; if ( t_ObjectPath ) { t_Result = t_Service->DeleteInstance (
t_ObjectPath, a_Flags, a_Context, a_CallResult ) ;
SysFreeString ( t_ObjectPath ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/ HRESULT CInterceptor_IWbemServices_Stub :: DeleteInstanceAsync ( const BSTR a_ObjectPath, long a_Flags, IWbemContext *a_Context, IWbemObjectSink *a_Sink ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->DeleteInstanceAsync (
a_ObjectPath, a_Flags, a_Context, a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_ObjectPath = SysAllocString ( a_ObjectPath ) ; if ( t_ObjectPath ) { t_Result = t_Service->DeleteInstanceAsync (
t_ObjectPath, a_Flags, a_Context, a_Sink ) ;
SysFreeString ( t_ObjectPath ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: CreateInstanceEnum (
const BSTR a_Class, long a_Flags, IWbemContext *a_Context, IEnumWbemClassObject **a_Enum ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->CreateInstanceEnum (
a_Class, a_Flags, a_Context, a_Enum ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_Class = SysAllocString ( a_Class ) ; if ( t_Class ) { t_Result = t_Service->CreateInstanceEnum (
t_Class, a_Flags, a_Context, a_Enum ) ;
SysFreeString ( t_Class ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: CreateInstanceEnumAsync (
const BSTR a_Class, long a_Flags, IWbemContext *a_Context, IWbemObjectSink *a_Sink
) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->CreateInstanceEnumAsync (
a_Class, a_Flags, a_Context, a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_Class = SysAllocString ( a_Class ) ; if ( t_Class ) { t_Result = t_Service->CreateInstanceEnumAsync (
a_Class, a_Flags, a_Context, a_Sink ) ;
SysFreeString ( t_Class ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: ExecQuery (
const BSTR a_QueryLanguage, const BSTR a_Query, long a_Flags, IWbemContext *a_Context, IEnumWbemClassObject **a_Enum ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->ExecQuery (
a_QueryLanguage, a_Query, a_Flags, a_Context, a_Enum ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_QueryLanguage = SysAllocString ( a_QueryLanguage ) ; BSTR t_Query = SysAllocString ( a_Query ) ; if ( t_QueryLanguage && t_Query ) { t_Result = t_Service->ExecQuery (
t_QueryLanguage, t_Query, a_Flags, a_Context, a_Enum ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; }
if ( t_QueryLanguage ) { SysFreeString ( t_QueryLanguage ) ; }
if ( t_Query ) { SysFreeString ( t_Query ) ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: ExecQueryAsync ( const BSTR a_QueryLanguage, const BSTR a_Query, long a_Flags, IWbemContext *a_Context , IWbemObjectSink *a_Sink ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->ExecQueryAsync (
a_QueryLanguage, a_Query, a_Flags, a_Context, a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_QueryLanguage = SysAllocString ( a_QueryLanguage ) ; BSTR t_Query = SysAllocString ( a_Query ) ; if ( t_QueryLanguage && t_Query ) { t_Result = t_Service->ExecQueryAsync (
t_QueryLanguage, t_Query, a_Flags, a_Context, a_Sink ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; }
if ( t_QueryLanguage ) { SysFreeString ( t_QueryLanguage ) ; }
if ( t_Query ) { SysFreeString ( t_Query ) ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: ExecNotificationQuery (
const BSTR a_QueryLanguage, const BSTR a_Query, long a_Flags, IWbemContext *a_Context, IEnumWbemClassObject **a_Enum ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->ExecNotificationQuery (
a_QueryLanguage, a_Query, a_Flags, a_Context, a_Enum ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_QueryLanguage = SysAllocString ( a_QueryLanguage ) ; BSTR t_Query = SysAllocString ( a_Query ) ; if ( t_QueryLanguage && t_Query ) { t_Result = t_Service->ExecNotificationQuery (
t_QueryLanguage, t_Query, a_Flags, a_Context, a_Enum ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; }
if ( t_QueryLanguage ) { SysFreeString ( t_QueryLanguage ) ; }
if ( t_Query ) { SysFreeString ( t_Query ) ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/ HRESULT CInterceptor_IWbemServices_Stub :: ExecNotificationQueryAsync ( const BSTR a_QueryLanguage, const BSTR a_Query, long a_Flags, IWbemContext *a_Context, IWbemObjectSink *a_Sink ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->ExecNotificationQueryAsync (
a_QueryLanguage, a_Query, a_Flags, a_Context, a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_QueryLanguage = SysAllocString ( a_QueryLanguage ) ; BSTR t_Query = SysAllocString ( a_Query ) ; if ( t_QueryLanguage && t_Query ) { t_Result = t_Service->ExecNotificationQueryAsync (
t_QueryLanguage, t_Query, a_Flags, a_Context, a_Sink ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; }
if ( t_QueryLanguage ) { SysFreeString ( t_QueryLanguage ) ; }
if ( t_Query ) { SysFreeString ( t_Query ) ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT STDMETHODCALLTYPE CInterceptor_IWbemServices_Stub :: 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 t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->ExecMethod (
a_ObjectPath, a_MethodName, a_Flags, a_Context, a_InParams, a_OutParams, a_CallResult ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_ObjectPath = SysAllocString ( a_ObjectPath ) ; BSTR t_MethodName = SysAllocString ( a_MethodName ) ; if ( t_ObjectPath && t_MethodName ) { t_Result = t_Service->ExecMethod (
t_ObjectPath, t_MethodName, a_Flags, a_Context, a_InParams, a_OutParams, a_CallResult ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; }
if ( t_ObjectPath ) { SysFreeString ( t_ObjectPath ) ; }
if ( t_MethodName ) { SysFreeString ( t_MethodName ) ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT STDMETHODCALLTYPE CInterceptor_IWbemServices_Stub :: ExecMethodAsync (
const BSTR a_ObjectPath, const BSTR a_MethodName, long a_Flags, IWbemContext *a_Context, IWbemClassObject *a_InParams, IWbemObjectSink *a_Sink ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , IID_IWbemServices , m_CoreService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_CoreService->ExecMethodAsync (
a_ObjectPath, a_MethodName, a_Flags, a_Context, a_InParams, a_Sink ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemServices *t_Service = ( IWbemServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_Service , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { BSTR t_ObjectPath = SysAllocString ( a_ObjectPath ) ; BSTR t_MethodName = SysAllocString ( a_MethodName ) ; if ( t_ObjectPath && t_MethodName ) { t_Result = t_Service->ExecMethodAsync (
a_ObjectPath, a_MethodName, a_Flags, a_Context, a_InParams, a_Sink ) ; } else { t_Result = WBEM_E_OUT_OF_MEMORY ; }
if ( t_ObjectPath ) { SysFreeString ( t_ObjectPath ) ; }
if ( t_MethodName ) { SysFreeString ( t_MethodName ) ; } }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: Initialize (
LPWSTR a_User, LONG a_Flags, LPWSTR a_Namespace, LPWSTR a_Locale, IWbemServices *a_Core , IWbemContext *a_Context , IWbemProviderInitSink *a_Sink ) { return WBEM_E_NOT_AVAILABLE ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: Shutdown (
LONG a_Flags , ULONG a_MaxMilliSeconds , IWbemContext *a_Context ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_GateClosed ) ;
bool t_Acquired = false ; while ( ! t_Acquired ) { if ( m_InProgress == 0 ) { t_Acquired = true ; break ; }
::Sleep(0); }
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: AddObjectToRefresher (
WBEM_REFRESHER_ID *a_RefresherId , LPCWSTR a_Path, long a_Flags , IWbemContext *a_Context, DWORD a_ClientRefresherVersion , WBEM_REFRESH_INFO *a_Information , DWORD *a_ServerRefresherVersion ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { if ( m_RefreshingService ) { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , IID_IWbemRefreshingServices , m_RefreshingService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_RefreshingService->AddObjectToRefresher (
a_RefresherId , a_Path, a_Flags , a_Context, a_ClientRefresherVersion , a_Information , a_ServerRefresherVersion ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemRefreshingServices *t_RefreshingService = ( IWbemRefreshingServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_RefreshingService , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_RefreshingService->AddObjectToRefresher (
a_RefresherId , a_Path, a_Flags , a_Context, a_ClientRefresherVersion , a_Information , a_ServerRefresherVersion ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } } else { t_Result = WBEM_E_NOT_AVAILABLE ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: AddObjectToRefresherByTemplate (
WBEM_REFRESHER_ID *a_RefresherId , IWbemClassObject *a_Template , long a_Flags , IWbemContext *a_Context , DWORD a_ClientRefresherVersion , WBEM_REFRESH_INFO *a_Information , DWORD *a_ServerRefresherVersion ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { if ( m_RefreshingService ) { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , IID_IWbemRefreshingServices , m_RefreshingService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_RefreshingService->AddObjectToRefresherByTemplate (
a_RefresherId , a_Template , a_Flags , a_Context , a_ClientRefresherVersion , a_Information , a_ServerRefresherVersion ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemRefreshingServices *t_RefreshingService = ( IWbemRefreshingServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_RefreshingService , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_RefreshingService->AddObjectToRefresherByTemplate (
a_RefresherId , a_Template , a_Flags , a_Context , a_ClientRefresherVersion , a_Information , a_ServerRefresherVersion ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } } else { t_Result = WBEM_E_NOT_AVAILABLE ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: AddEnumToRefresher (
WBEM_REFRESHER_ID *a_RefresherId , LPCWSTR a_Class , long a_Flags , IWbemContext *a_Context, DWORD a_ClientRefresherVersion , WBEM_REFRESH_INFO *a_Information , DWORD *a_ServerRefresherVersion ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { if ( m_RefreshingService ) { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , IID_IWbemRefreshingServices , m_RefreshingService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_RefreshingService->AddEnumToRefresher (
a_RefresherId , a_Class , a_Flags , a_Context, a_ClientRefresherVersion , a_Information , a_ServerRefresherVersion ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemRefreshingServices *t_RefreshingService = ( IWbemRefreshingServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_RefreshingService , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_RefreshingService->AddEnumToRefresher (
a_RefresherId , a_Class , a_Flags , a_Context, a_ClientRefresherVersion , a_Information , a_ServerRefresherVersion ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } } else { t_Result = WBEM_E_NOT_AVAILABLE ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: RemoveObjectFromRefresher (
WBEM_REFRESHER_ID *a_RefresherId , long a_Id , long a_Flags , DWORD a_ClientRefresherVersion , DWORD *a_ServerRefresherVersion ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { if ( m_RefreshingService ) { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , IID_IWbemRefreshingServices , m_RefreshingService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_RefreshingService->RemoveObjectFromRefresher (
a_RefresherId , a_Id , a_Flags , a_ClientRefresherVersion , a_ServerRefresherVersion ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemRefreshingServices *t_RefreshingService = ( IWbemRefreshingServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_RefreshingService , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_RefreshingService->RemoveObjectFromRefresher (
a_RefresherId , a_Id , a_Flags , a_ClientRefresherVersion , a_ServerRefresherVersion ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } } else { t_Result = WBEM_E_NOT_AVAILABLE ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: GetRemoteRefresher (
WBEM_REFRESHER_ID *a_RefresherId , long a_Flags , DWORD a_ClientRefresherVersion , IWbemRemoteRefresher **a_RemoteRefresher , GUID *a_Guid , DWORD *a_ServerRefresherVersion ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { if ( m_RefreshingService ) { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , IID_IWbemRefreshingServices , m_RefreshingService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_RefreshingService->GetRemoteRefresher (
a_RefresherId , a_Flags , a_ClientRefresherVersion , a_RemoteRefresher , a_Guid , a_ServerRefresherVersion ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemRefreshingServices *t_RefreshingService = ( IWbemRefreshingServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_RefreshingService , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_RefreshingService->GetRemoteRefresher (
a_RefresherId , a_Flags , a_ClientRefresherVersion , a_RemoteRefresher , a_Guid , a_ServerRefresherVersion ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } } else { t_Result = WBEM_E_NOT_AVAILABLE ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
/******************************************************************************
* * Name: * * * Description: * * *****************************************************************************/
HRESULT CInterceptor_IWbemServices_Stub :: ReconnectRemoteRefresher (
WBEM_REFRESHER_ID *a_RefresherId, long a_Flags, long a_NumberOfObjects, DWORD a_ClientRefresherVersion , WBEM_RECONNECT_INFO *a_ReconnectInformation , WBEM_RECONNECT_RESULTS *a_ReconnectResults , DWORD *a_ServerRefresherVersion ) { HRESULT t_Result = S_OK ;
InterlockedIncrement ( & m_InProgress ) ;
if ( m_GateClosed == 1 ) { t_Result = WBEM_E_SHUTTING_DOWN ; } else { if ( m_RefreshingService ) { BOOL t_Impersonating = FALSE ; IUnknown *t_OldContext = NULL ; IServerSecurity *t_OldSecurity = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: BeginCallbackImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; if ( SUCCEEDED ( t_Result ) ) { BOOL t_Revert = FALSE ; IUnknown *t_Proxy = NULL ;
t_Result = DecoupledProviderSubSystem_Globals :: SetProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , IID_IWbemRefreshingServices , m_RefreshingService , t_Proxy , t_Revert ) ; if ( t_Result == WBEM_E_NOT_FOUND ) { t_Result = m_RefreshingService->ReconnectRemoteRefresher (
a_RefresherId, a_Flags, a_NumberOfObjects, a_ClientRefresherVersion , a_ReconnectInformation , a_ReconnectResults , a_ServerRefresherVersion ) ; } else { if ( SUCCEEDED ( t_Result ) ) { IWbemRefreshingServices *t_RefreshingService = ( IWbemRefreshingServices * ) t_Proxy ;
// Set cloaking on the proxy
// =========================
DWORD t_ImpersonationLevel = DecoupledProviderSubSystem_Globals :: GetCurrentImpersonationLevel () ;
t_Result = DecoupledProviderSubSystem_Globals :: SetCloaking (
t_RefreshingService , RPC_C_AUTHN_LEVEL_CONNECT , t_ImpersonationLevel ) ;
if ( SUCCEEDED ( t_Result ) ) { t_Result = t_RefreshingService->ReconnectRemoteRefresher (
a_RefresherId, a_Flags, a_NumberOfObjects, a_ClientRefresherVersion , a_ReconnectInformation , a_ReconnectResults , a_ServerRefresherVersion ) ; }
HRESULT t_TempResult = DecoupledProviderSubSystem_Globals :: RevertProxyState ( m_ProxyContainer , ProxyIndex_Stub_IWbemRefreshingServices , t_Proxy , t_Revert ) ; } }
DecoupledProviderSubSystem_Globals :: EndImpersonation ( t_OldContext , t_OldSecurity , t_Impersonating ) ; } } else { t_Result = WBEM_E_NOT_AVAILABLE ; } }
InterlockedDecrement ( & m_InProgress ) ;
return t_Result ; }
|