📄 wbemglue.h
字号:
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
//***************************************************************************
//
// Copyright (c) 1997-1999 Microsoft Corporation
//
// WBEMGLUE.H
//
// Purpose: Implementation of WBEM Glue classes
//
//***************************************************************************
#if _MSC_VER > 1000
#pragma once
#endif
#ifndef _WbemGlue_H_Included
#define _WbemGlue_H_Included
#undef PURE
#define PURE {return (ULONG)E_NOTIMPL;}
typedef LPVOID *PPVOID;
#include <wbemidl.h>
#include <map>
#include <provider.h>
#define DEFAULT_NAMESPACE L"Root\\CimV2"
typedef std::map<CHString, LPVOID> STRING2LPVOID;
class POLARITY CWbemProviderGlue : public IWbemServices, public IWbemProviderInit
{
public:
// Public Static functions
// these are for use by implementors of Framework based providers
static HRESULT WINAPI GetAllInstances( LPCWSTR pszClassName,
TRefPointerCollection<CInstance> *pList,
LPCWSTR pszNamespace,
MethodContext *pMethodContext );
static HRESULT WINAPI GetAllInstancesAsynch( LPCWSTR pszClassName,
Provider *pRequester,
LPProviderInstanceCallback pCallback,
LPCWSTR pszNamespace,
MethodContext *pMethodContext,
void *pUserData );
static HRESULT WINAPI GetAllDerivedInstancesAsynch( LPCWSTR pszBaseClassName,
Provider *pRequester,
LPProviderInstanceCallback pCallback,
LPCWSTR pszNamespace,
MethodContext *pMethodContext,
void *pUserData );
static HRESULT WINAPI GetAllDerivedInstances( LPCWSTR pszBaseClassName,
TRefPointerCollection<CInstance> *pList,
MethodContext *pMethodContext,
LPCWSTR pszNamespace = NULL);
static HRESULT WINAPI GetInstanceByPath( LPCWSTR pszObjectPath,
CInstance **ppInstance,
MethodContext *pMethodContext = NULL );
static HRESULT WINAPI GetInstanceKeysByPath( LPCWSTR pszInstancePath,
CInstance **ppInstance,
MethodContext *pMethodContext);
static HRESULT WINAPI GetInstancePropertiesByPath( LPCWSTR pszInstancePath,
CInstance **ppInstance,
MethodContext *pMethodContext,
CHStringArray &csaProperties);
static HRESULT WINAPI GetInstancesByQuery( LPCWSTR query,
TRefPointerCollection<CInstance> *pList,
MethodContext *pMethodContext,
LPCWSTR pszNamespace = NULL);
static HRESULT WINAPI GetInstancesByQueryAsynch( LPCWSTR query,
Provider *pRequester,
LPProviderInstanceCallback pCallback,
LPCWSTR pszNamespace,
MethodContext *pMethodContext,
void *pUserData );
// This version of GetEmptyInstance is deprecated. Use the next one.
static HRESULT WINAPI GetEmptyInstance( LPCWSTR pszClassName,
CInstance **ppInstance,
LPCWSTR pszNamespace = NULL);
static HRESULT WINAPI GetEmptyInstance( MethodContext *pMethodContext,
LPCWSTR pszClassName,
CInstance **ppInstance,
LPCWSTR pszNamespace = NULL);
// Both of these FillInstance calls are deprecated. Use GetInstanceByPath, or the even
// more performant versions of GetInstanceKeysByPath or GetInstancePropertiesByPath.
static HRESULT WINAPI FillInstance( CInstance *pInstance,
LPCWSTR pszNamespace = NULL );
static HRESULT WINAPI FillInstance( MethodContext *pMethodContext,
CInstance *pInstance );
// determine whether one class is derived from another
static bool WINAPI IsDerivedFrom( LPCWSTR pszBaseClassName,
LPCWSTR pszDerivedClassName,
MethodContext *pMethodContext,
LPCWSTR pszNamespace = NULL );
// logging in and out of framework
// each framework based DLL must log in and out with these functions
// preferably in DllMain and DllCanUnloadNow
static BOOL WINAPI FrameworkLoginDLL(LPCWSTR name);
static BOOL WINAPI FrameworkLogoffDLL(LPCWSTR name);
static bool WINAPI SetStatusObject(MethodContext *pContext, LPCWSTR pNamespace,
LPCWSTR pDescription, HRESULT hr,
const SAFEARRAY *pPrivilegesNotHeld = NULL,
const SAFEARRAY *pPrivilegesRequired = NULL);
////////////////////////////////////////////////////////////////////////////////////
// note: the following public functions are necessary to allow COM communication //
// with CIMOM. Provider Implementors will not need to call these. //
////////////////////////////////////////////////////////////////////////////////////
#ifndef NO_BASEINTERFACE_FUNCS
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR *ppvObj) ;
STDMETHOD_(ULONG, AddRef)(THIS) ;
STDMETHOD_(ULONG, Release)(THIS) ;
#endif
virtual HRESULT STDMETHODCALLTYPE Initialize(
/* [in] */ LPWSTR pszUser,
/* [in] */ LONG lFlags,
/* [in] */ LPWSTR pszNamespace,
/* [in] */ LPWSTR pszLocale,
/* [in] */ IWbemServices __RPC_FAR *pNamespace,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [in] */ IWbemProviderInitSink __RPC_FAR *pInitSink
);
STDMETHOD(CreateInstanceEnumAsync)(THIS_
/* [in] */ const BSTR Class,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler
);
STDMETHOD(GetObjectAsync)( THIS_
const BSTR ObjectPath,
long lFlags,
IWbemContext __RPC_FAR *pCtx,
IWbemObjectSink __RPC_FAR *pResponseHandler
);
STDMETHOD(ExecQueryAsync)(THIS_
/* [in] */ const BSTR QueryLanguage,
/* [in] */ const BSTR Query,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler
);
STDMETHOD(PutInstanceAsync)( THIS_
/* [in] */ IWbemClassObject __RPC_FAR *pInst,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler
);
STDMETHOD(DeleteInstanceAsync)(
/* [in] */ const BSTR ObjectPath,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler
);
STDMETHOD(ExecMethodAsync)( const BSTR,
const BSTR,
long,
IWbemContext*,
IWbemClassObject*,
IWbemObjectSink*
);
// Unsupported service methods
// ===========================
STDMETHOD(OpenNamespace)(THIS_
const BSTR Namespace,
long lFlags,
IWbemContext __RPC_FAR *pCtx,
IWbemServices __RPC_FAR *__RPC_FAR *ppWorkingNamespace,
IWbemCallResult __RPC_FAR *__RPC_FAR *ppResult
)
{ return E_NOTIMPL; }
STDMETHOD(PutClass)(IWbemClassObject __RPC_FAR *pObject,
long lFlags,
IWbemContext __RPC_FAR *pCtx,
IWbemCallResult __RPC_FAR *__RPC_FAR *ppCallResult
)
{return E_NOTIMPL;}
STDMETHOD(PutClassAsync)(
/* [in] */ IWbemClassObject __RPC_FAR *pObject,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler
)
{return E_NOTIMPL;}
STDMETHOD(DeleteClass)(
/* [in] */ const BSTR Class,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [unique][in][out] */ IWbemCallResult __RPC_FAR *__RPC_FAR *ppCallResult
)
{return E_NOTIMPL;}
STDMETHOD(DeleteClassAsync)(
/* [in] */ const BSTR Class,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler
)
{return E_NOTIMPL;}
STDMETHOD(CreateClassEnum)(
/* [in] */ const BSTR Superclass,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -