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

81 lines
1.9 KiB
C++

#ifndef __WBEM_EMAIL_CONSUMER__H_
#define __WBEM_EMAIL_CONSUMER__H_
#include <unk.h>
#include <wbemidl.h>
#include <mapix.h>
#include "txttempl.h"
class CEmailConsumer : public CUnk
{
protected:
class XProvider : public CImpl<IWbemEventConsumerProvider, CEmailConsumer>
{
public:
XProvider(CEmailConsumer* pObj)
: CImpl<IWbemEventConsumerProvider, CEmailConsumer>(pObj){}
HRESULT STDMETHODCALLTYPE FindConsumer(
IWbemClassObject* pLogicalConsumer,
IWbemUnboundObjectSink** ppConsumer);
} m_XProvider;
friend XProvider;
protected:
HANDLE m_hAttention;
HANDLE m_hDone;
HANDLE m_hThread;
IWbemClassObject* m_pLogicalConsumer;
IStream* m_pStream;
static DWORD staticWorker(void*);
void Worker();
public:
CEmailConsumer(CLifeControl* pControl = NULL, IUnknown* pOuter = NULL);
~CEmailConsumer();
void* GetInterface(REFIID riid);
};
class CEmailSink : public CUnk
{
protected:
class XSink : public CImpl<IWbemUnboundObjectSink, CEmailSink>
{
public:
XSink(CEmailSink* pObj) :
CImpl<IWbemUnboundObjectSink, CEmailSink>(pObj){}
HRESULT STDMETHODCALLTYPE IndicateToConsumer(
IWbemClassObject* pLogicalConsumer, long lNumObjects,
IWbemClassObject** apObjects);
} m_XSink;
friend XSink;
protected:
IMAPISession* m_pSession;
IMAPIFolder* m_pOutbox;
IMsgStore* m_pStore;
IAddrBook* m_pAddrBook;
ADRLIST* m_pAddrList;
CTextTemplate m_SubjectTemplate;
CTextTemplate m_MessageTemplate;
WString m_wsProfile;
WString m_wsAddressee;
public:
CEmailSink(CLifeControl* pControl = NULL);
~CEmailSink();
HRESULT Initialize(IWbemClassObject* pLogicalConsumer);
void* GetInterface(REFIID riid);
};
#endif