94 lines
3.1 KiB
C++
94 lines
3.1 KiB
C++
// **************************************************************************
|
|
|
|
// Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved
|
|
//
|
|
// File: wbemdump.h
|
|
//
|
|
// **************************************************************************
|
|
#pragma once
|
|
|
|
// Generic class to be used as the sink to wbem's async functions. Note that
|
|
// the constructor starts with a refcount of 1, so the instance created with NEW
|
|
// must be Released. This release will delete the object. Also note that this
|
|
// class doesn't do anything with the objects it receives. It is meant to be
|
|
// overridden with methods that actually process the items.
|
|
class
|
|
__declspec(uuid("995C5E57-BC79-42c2-93DD-1A2A1693A73A"))
|
|
QuerySink : public IWbemObjectSink
|
|
{
|
|
protected:
|
|
LONG m_lRef;
|
|
HRESULT m_hResult;
|
|
HANDLE m_hDone;
|
|
|
|
public:
|
|
QuerySink();
|
|
~QuerySink();
|
|
|
|
virtual ULONG STDMETHODCALLTYPE AddRef();
|
|
virtual ULONG STDMETHODCALLTYPE Release();
|
|
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppv);
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE Indicate(
|
|
/* [in] */ LONG lObjectCount,
|
|
/* [size_is][in] */ IWbemClassObject __RPC_FAR *__RPC_FAR *apObjArray
|
|
) { UNREFERENCED(apObjArray); UNREFERENCED(lObjectCount); return WBEM_E_FAILED; }
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE SetStatus(
|
|
/* [in] */ LONG lFlags,
|
|
/* [in] */ HRESULT hResult,
|
|
/* [in] */ BSTR strParam,
|
|
/* [in] */ IWbemClassObject __RPC_FAR *pObjParam
|
|
);
|
|
|
|
HANDLE GetEvent() { return m_hDone; }
|
|
HRESULT GetResult() { return m_hResult; }
|
|
};
|
|
|
|
// Overrides the Indicate method of QuerySink to process the received instances.
|
|
class
|
|
__declspec(uuid("3BFFE942-449C-416c-8D88-D84BAE2C4B79"))
|
|
InstanceQuerySink : public QuerySink
|
|
{
|
|
protected:
|
|
IWbemServicesPtr m_pIWbemServices;
|
|
DWORD m_dwCount;
|
|
LPCWSTR m_pwszClassName;
|
|
bool m_bFirst;
|
|
|
|
public:
|
|
InstanceQuerySink(IWbemServices *pIWbemServices, LPCWSTR pwszClassName);
|
|
~InstanceQuerySink();
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE Indicate(
|
|
/* [in] */ LONG lObjectCount,
|
|
/* [size_is][in] */ IWbemClassObject __RPC_FAR *__RPC_FAR *apObjArray
|
|
);
|
|
|
|
DWORD GetCount() { return m_dwCount; }
|
|
};
|
|
|
|
// Overrides the Indicate method of QuerySink to process the received classes
|
|
class
|
|
__declspec(uuid("ED7F93C9-00E4-4cdd-B1A5-34CF14772D42"))
|
|
ClassQuerySink : public QuerySink
|
|
{
|
|
protected:
|
|
IWbemServicesPtr m_pIWbemServices;
|
|
|
|
public:
|
|
ClassQuerySink(IWbemServices *pIWbemServices);
|
|
~ClassQuerySink();
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE Indicate(
|
|
/* [in] */ LONG lObjectCount,
|
|
/* [size_is][in] */ IWbemClassObject __RPC_FAR *__RPC_FAR *apObjArray
|
|
);
|
|
|
|
};
|
|
|
|
// Overrides the Set method of QuerySink to process the IWbemServices pointer
|
|
|
|
_COM_SMARTPTR_TYPEDEF(ClassQuerySink, __uuidof(ClassQuerySink));
|
|
_COM_SMARTPTR_TYPEDEF(InstanceQuerySink, __uuidof(InstanceQuerySink));
|