windows-nt/Source/XPSP1/NT/inetsrv/iis/staxinc/export/msgutils.h

107 lines
2.2 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
#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