Windows2003-3790/inetcore/outlookexpress/msoert/clogfile.h
2020-09-30 16:53:55 +02:00

86 lines
4.0 KiB
C++

//--------------------------------------------------------------------------
// LogFile.h
// Copyright (C) Microsoft Corporation, 1997 - Rocket Database
//--------------------------------------------------------------------------
#ifndef __CLOGFILE_H
#define __CLOGFILE_H
//--------------------------------------------------------------------------
// Constants
//--------------------------------------------------------------------------
#define MAX_LOGFILE_PREFIX 10
//--------------------------------------------------------------------------
// Write Log Type
//--------------------------------------------------------------------------
typedef enum {
LOGFILE_RX = 0,
LOGFILE_TX,
LOGFILE_DB,
LOGFILE_MAX
} LOGFILETYPE;
#define DONT_TRUNCATE 0xFFFFFFFF
//--------------------------------------------------------------------------
// ILogFile
//--------------------------------------------------------------------------
interface ILogFile : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE Open(HINSTANCE hInst, LPCSTR szLogFile, LPCSTR szPrefix, DWORD cbTruncate, DWORD dwShareMode) = 0;
virtual HRESULT STDMETHODCALLTYPE TraceLog(SHOWTRACEMASK dwMask, TRACEMACROTYPE tracetype, ULONG ulLine, HRESULT hrResult, LPCSTR pszMessage) = 0;
virtual HRESULT STDMETHODCALLTYPE WriteLog(LOGFILETYPE lft, LPCSTR pszData) = 0;
virtual HRESULT STDMETHODCALLTYPE DebugLog(LPCSTR pszData) = 0;
virtual HRESULT STDMETHODCALLTYPE DebugLogs(LPCSTR pszFormat, const char *s) = 0;
virtual HRESULT STDMETHODCALLTYPE DebugLogd(const char *fmt, int d) = 0;
};
//--------------------------------------------------------------------------
// DllExported CLogFile Class
//--------------------------------------------------------------------------
class CLogFile : public ILogFile
{
public:
//----------------------------------------------------------------------
// Construction
//----------------------------------------------------------------------
CLogFile(void);
~CLogFile(void);
//----------------------------------------------------------------------
// IUnknown
//----------------------------------------------------------------------
STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppv);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
//----------------------------------------------------------------------
// CLogFile Methods
//----------------------------------------------------------------------
STDMETHODIMP Open(HINSTANCE hInst, LPCSTR szLogFile, LPCSTR szPrefix, DWORD cbTruncate, DWORD dwShareMode);
STDMETHODIMP TraceLog(SHOWTRACEMASK dwMask, TRACEMACROTYPE tracetype, ULONG ulLine, HRESULT hrResult, LPCSTR pszMessage);
STDMETHODIMP WriteLog(LOGFILETYPE lft, LPCSTR pszData);
STDMETHODIMP DebugLog(LPCSTR pszData); // data to be logged
STDMETHODIMP DebugLogs(LPCSTR pszFormat, const char *s);
STDMETHODIMP DebugLogd(const char *fmt, int d);
private:
//----------------------------------------------------------------------
// Private Data
//----------------------------------------------------------------------
LONG m_cRef; // Reference Counting
HANDLE m_hFile; // Handle to the logfile
CHAR m_szPrefix[MAX_LOGFILE_PREFIX]; // Logfile prefix
HANDLE m_hMutex; // So log files can be shared across procs
CRITICAL_SECTION m_cs; // Thread Safety
};
//--------------------------------------------------------------------------
// Prototypes
//--------------------------------------------------------------------------
OESTDAPI_(HRESULT) CreateLogFile(HINSTANCE hInst, LPCSTR pszLogFile, LPCSTR pszPrefix,
DWORD cbTruncate, ILogFile **ppLogFile, DWORD dwShareMode);
#endif // __CLOGFILE_H