📄 wbemglue.h
字号:
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [out] */ IEnumWbemClassObject __RPC_FAR *__RPC_FAR *ppEnum
)
{return E_NOTIMPL;}
STDMETHOD(CreateClassEnumAsync)(
/* [in] */ const BSTR Superclass,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler
)
{return E_NOTIMPL;}
STDMETHOD(PutInstance)(
/* [in] */ IWbemClassObject __RPC_FAR *pInst,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [unique][in][out] */ IWbemCallResult __RPC_FAR *__RPC_FAR *ppCallResult
)
{return E_NOTIMPL;}
STDMETHOD(DeleteInstance)(
/* [in] */ const BSTR ObjectPath,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [unique][in][out] */ IWbemCallResult __RPC_FAR *__RPC_FAR *ppCallResult
)
{return E_NOTIMPL;}
STDMETHOD(CancelAsyncRequest)(THIS_ long lAsyncRequestHandle
)
{return E_NOTIMPL;}
STDMETHOD(CancelAsyncCall)(IWbemObjectSink __RPC_FAR *pSink
)
{return E_NOTIMPL;}
STDMETHOD(CreateInstanceEnum)(
/* [in] */ const BSTR Class,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [out] */ IEnumWbemClassObject __RPC_FAR *__RPC_FAR *ppEnum
)
{return E_NOTIMPL;}
STDMETHOD(ExecQuery)(
/* [in] */ const BSTR QueryLanguage,
/* [in] */ const BSTR Query,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [out] */ IEnumWbemClassObject __RPC_FAR *__RPC_FAR *ppEnum
)
{return E_NOTIMPL;}
STDMETHOD(QueryObjectSink)(long lFlags,
IWbemObjectSink __RPC_FAR *__RPC_FAR *ppResponseHandler
)
{return E_NOTIMPL;}
STDMETHOD(GetObject)( const BSTR ObjectPath,
long lFlags,
IWbemContext __RPC_FAR *pCtx,
IWbemClassObject __RPC_FAR *__RPC_FAR *ppObject,
IWbemCallResult __RPC_FAR *__RPC_FAR *ppCallResult
)
{return E_NOTIMPL;}
STDMETHOD(ExecNotificationQuery)(
/* [in] */ const BSTR QueryLanguage,
/* [in] */ const BSTR Query,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [out] */ IEnumWbemClassObject __RPC_FAR *__RPC_FAR *ppEnum
)
{return E_NOTIMPL;}
STDMETHOD(ExecNotificationQueryAsync)(
/* [in] */ const BSTR QueryLanguage,
/* [in] */ const BSTR Query,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler
)
{return E_NOTIMPL;}
STDMETHOD(ExecMethod)(const BSTR,
const BSTR,
long,
IWbemContext*,
IWbemClassObject*,
IWbemClassObject**,
IWbemCallResult**
)
{return E_NOTIMPL;}
CWbemProviderGlue();
~CWbemProviderGlue(); // Destructor
// used by the provider base class - you probably will never need to call this directly
static IWbemServices *WINAPI GetNamespaceConnection( LPCWSTR NameSpace );
// each provider class must log in and out with these in their constructors and destructors
// this is done for you in the Provider base class
static void WINAPI FrameworkLogin( LPCWSTR a_pszName,
Provider *a_pProvider,
LPCWSTR a_pszNameSpace );
static void WINAPI FrameworkLogoff( LPCWSTR a_pszName,
LPCWSTR a_pszNameSpace );
static void WINAPI IncrementObjectCount(void);
static LONG WINAPI DecrementObjectCount(void);
static DWORD WINAPI GetOSMajorVersion() { return s_dwMajorVersion; }
static DWORD WINAPI GetPlatform() { return s_dwPlatform; }
static LPCWSTR WINAPI GetCSDVersion() { return s_wstrCSDVersion; }
private:
static HRESULT WINAPI GetInstanceFromCIMOM( LPCWSTR pszObjectPath,
LPCWSTR pszNameSpace,
MethodContext *pMethodContext,
CInstance **ppInstance );
void FlushAll(void);
static IWbemServices *WINAPI SearchMapForNamespace( const BSTR NameSpace );
static void WINAPI AddNamespaceToMap( const BSTR NameSpace,
IWbemServices *pWbemServices );
static void WINAPI ClearNamespaceMap( void );
static Provider *WINAPI SearchMapForProvider( LPCWSTR a_pszProviderName,
LPCWSTR a_pszNamespace );
static Provider *WINAPI AddProviderToMap( LPCWSTR a_pszProviderName,
LPCWSTR a_strNamespace,
Provider *a_pProvider );
static void WINAPI LockProviderMap( void );
static void WINAPI UnlockProviderMap( void );
static IWbemClassObject *WINAPI GetStatusObject( MethodContext *pContext,
LPCWSTR pNamespace);
static void WINAPI LockNamespaceMap( void );
static void WINAPI UnlockNamespaceMap( void );
static void WINAPI Init( void );
static void WINAPI UnInit( void );
static void WINAPI GetComputerName( CHString& strComputerName );
static HRESULT WINAPI CheckImpersonationLevel();
HRESULT PreProcessPutInstanceParms(IWbemClassObject __RPC_FAR *pInstIn,
IWbemClassObject __RPC_FAR **pInstOut,
IWbemContext __RPC_FAR *pCtx);
HRESULT NullOutUnsetProperties(IWbemClassObject __RPC_FAR *pInstIn,
IWbemClassObject __RPC_FAR **pInstOut,
const VARIANT& vValue);
long m_lRefCount;
CHString m_strNamespace;
static long s_lObjects; // number of objects out there - class factories, mostly.
static STRING2LPVOID s_providersmap;
static STRING2LPVOID s_wbemservicesmap;
static CCritSec s_csProviderMap;
static CCritSec s_csNamespaceMap;
static CCritSec m_csStatusObject;
static BOOL s_bInitted;
static DWORD s_dwPlatform;
static DWORD s_dwMajorVersion;
static WCHAR s_wstrCSDVersion[128];
static IWbemClassObject *m_pStatusObject;
};
inline void CWbemProviderGlue::LockProviderMap( void )
{
EnterCriticalSection( &s_csProviderMap );
}
inline void CWbemProviderGlue::UnlockProviderMap( void )
{
LeaveCriticalSection( &s_csProviderMap );
}
inline void CWbemProviderGlue::LockNamespaceMap( void )
{
EnterCriticalSection( &s_csNamespaceMap );
}
inline void CWbemProviderGlue::UnlockNamespaceMap( void )
{
LeaveCriticalSection( &s_csNamespaceMap );
}
class POLARITY CWbemGlueFactory : public IClassFactory
{
protected:
long m_lRefCount;
public:
CWbemGlueFactory(void);
~CWbemGlueFactory(void);
//IUnknown members
STDMETHODIMP QueryInterface(REFIID, PPVOID);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
//IClassFactory members
STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, PPVOID);
STDMETHODIMP LockServer(BOOL);
};
typedef CWbemGlueFactory *PCWbemGlueFactory;
#endif
#pragma option pop /*P_O_Pop*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -