2025-04-27 07:49:33 -04:00

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));