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

50 lines
890 B
C++

// SinkMap.h: interface for the CSinkMap class.
//
//////////////////////////////////////////////////////////////////////
#ifndef WMI_XML_SINK_MAP_H
#define WMI_XML_SINK_MAP_H
class SinkMapNode
{
public:
IWbemObjectSink *m_pObjSink;
SinkMapNode *m_pNext;
SinkMapNode(IWbemObjectSink *pObjSink, SinkMapNode *pNext)
{
if(m_pObjSink = pObjSink)
m_pObjSink->AddRef();
m_pNext = pNext;
}
virtual ~SinkMapNode()
{
if(m_pObjSink)
m_pObjSink->Release();
}
};
class CSinkMap
{
private:
CRITICAL_SECTION m_CSMain;
SinkMapNode *m_pHead;
protected:
SinkMapNode *Get(IWbemObjectSink *pObjSink);
SinkMapNode *Add(IWbemObjectSink *pObjSink);
public:
CSinkMap();
virtual ~CSinkMap();
public:
HRESULT AddToMap(IWbemObjectSink *pObjSink);
bool IsCancelled(IWbemObjectSink *pObjSink);
};
#endif // WMI_XML_SINK_MAP_H