107 lines
2.2 KiB
C++
107 lines
2.2 KiB
C++
|
|
|
|
#ifndef __MSGUTILS_H__
|
|
#define __MSGUTILS_H__
|
|
|
|
HRESULT CreateDummyISMTPServer(
|
|
DWORD dwInstance,
|
|
LPSTR szLogFileName,
|
|
ISMTPServer **ppServer
|
|
);
|
|
|
|
HRESULT CreateStoreDriver(
|
|
DWORD dwInstance,
|
|
ISMTPServer *pServer,
|
|
IMailMsgStoreDriver **ppStore
|
|
);
|
|
|
|
HRESULT CreateUnboundMailMsg(
|
|
IMailMsgProperties **ppMsg
|
|
);
|
|
|
|
HRESULT BindMailMsg(
|
|
IMailMsgProperties *ppMsg,
|
|
IMailMsgStoreDriver *pStore,
|
|
IMailMsgPropertyStream *pStream,
|
|
HANDLE hFile
|
|
);
|
|
|
|
HRESULT CreateBoundMailMsg(
|
|
IMailMsgStoreDriver *pStore,
|
|
IMailMsgProperties **ppMsg
|
|
);
|
|
|
|
HRESULT GenerateRandomProperties(
|
|
IMailMsgProperties *pMsg,
|
|
DWORD dwNumGlobalProperties,
|
|
DWORD dwAvgGlobalPropertyLength,
|
|
DWORD dwNumRecipients,
|
|
DWORD dwAvgUserNameLength,
|
|
DWORD dwAvgDomainNameLength,
|
|
DWORD dwNumRecipientProperties,
|
|
DWORD dwAvgRecipientPropertyLength
|
|
);
|
|
|
|
|
|
class CDummySMTPServer : public ISMTPServer
|
|
{
|
|
public:
|
|
CDummySMTPServer(
|
|
DWORD dwInstance,
|
|
LPSTR szLogFileName
|
|
)
|
|
{
|
|
m_dwInstance = dwInstance;
|
|
if (szLogFileName)
|
|
lstrcpy(m_szLogFileName, szLogFileName);
|
|
else
|
|
*m_szLogFileName = '\0';
|
|
m_hLogFile = INVALID_HANDLE_VALUE;
|
|
m_ulRefCount = 1;
|
|
}
|
|
~CDummySMTPServer()
|
|
{
|
|
if (m_hLogFile != INVALID_HANDLE_VALUE)
|
|
CloseHandle(m_hLogFile);
|
|
}
|
|
|
|
HRESULT Init();
|
|
|
|
STDMETHOD(QueryInterface)(REFIID iid, void **ppvObject);
|
|
STDMETHOD_(ULONG, AddRef)(void) {return(InterlockedIncrement(&m_ulRefCount));};
|
|
STDMETHOD_(ULONG, Release) (void)
|
|
{
|
|
LONG lRefCount = InterlockedDecrement(&m_ulRefCount);
|
|
if (lRefCount == 0)
|
|
{
|
|
delete this;
|
|
}
|
|
|
|
return(lRefCount);
|
|
};
|
|
|
|
STDMETHOD (AllocMessage)(
|
|
IMailMsgProperties **ppMsg
|
|
);
|
|
|
|
STDMETHOD (SubmitMessage)(
|
|
IMailMsgProperties *pMsg
|
|
);
|
|
|
|
STDMETHOD (TriggerLocalDelivery)(IMailMsgProperties *pMsg, DWORD dwRecipientCount, DWORD * pdwRecipIndexes);
|
|
|
|
STDMETHOD (ReadMetabaseString)(DWORD MetabaseId, LPBYTE Buffer, DWORD * BufferSize, BOOL fSecure);
|
|
|
|
STDMETHOD (ReadMetabaseDword)(DWORD MetabaseId, DWORD * dwValue);
|
|
STDMETHOD (ServerStartHintFunction)();
|
|
STDMETHOD (ServerStopHintFunction)();
|
|
|
|
private:
|
|
LONG m_ulRefCount;
|
|
DWORD m_dwInstance;
|
|
char m_szLogFileName[MAX_PATH * 2];
|
|
HANDLE m_hLogFile;
|
|
};
|
|
|
|
#endif
|