87 lines
1.9 KiB
C++
87 lines
1.9 KiB
C++
#include "stdafx.h"
|
|
#include "TransLogger.h"
|
|
|
|
CTransLogger::CTransLogger()
|
|
{
|
|
}
|
|
|
|
CTransLogger::~CTransLogger()
|
|
{
|
|
}
|
|
|
|
HANDLE CTransLogger::m_hFile = INVALID_HANDLE_VALUE;
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|
/// Operations
|
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
bool CTransLogger::Create(LPCTSTR lpszPathName, bool bOverwrite)
|
|
{
|
|
if(m_hFile != INVALID_HANDLE_VALUE)
|
|
return true;
|
|
|
|
m_hFile = ::CreateFile(lpszPathName, GENERIC_WRITE, FILE_SHARE_READ, NULL, bOverwrite ? CREATE_ALWAYS : OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
if(m_hFile == INVALID_HANDLE_VALUE)
|
|
return false;
|
|
|
|
if(!bOverwrite)
|
|
::SetFilePointer(m_hFile, 0, NULL, FILE_END);
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CTransLogger::Close()
|
|
{
|
|
if(m_hFile == INVALID_HANDLE_VALUE)
|
|
return false;
|
|
|
|
bool bClose = ::CloseHandle(m_hFile) ? true :false;
|
|
m_hFile = INVALID_HANDLE_VALUE;
|
|
|
|
return bClose;
|
|
}
|
|
|
|
bool CTransLogger::Flush()
|
|
{
|
|
if(m_hFile == INVALID_HANDLE_VALUE)
|
|
return false;
|
|
|
|
return ::FlushFileBuffers(m_hFile) ? true : false;
|
|
}
|
|
|
|
DWORD CTransLogger::Write(LPCTSTR lpszFormat, ...)
|
|
{
|
|
if(m_hFile == INVALID_HANDLE_VALUE)
|
|
return -1;
|
|
|
|
TCHAR* pszMessage = NULL;
|
|
DWORD dwSize = 0;
|
|
|
|
va_list listArgument;
|
|
va_start(listArgument, lpszFormat);
|
|
dwSize = (DWORD)::_vsctprintf(lpszFormat, listArgument) + 1;
|
|
|
|
pszMessage = new TCHAR[dwSize];
|
|
::memset(pszMessage, NULL, dwSize);
|
|
|
|
dwSize = (DWORD)::_vstprintf(pszMessage, lpszFormat, listArgument);
|
|
va_end(listArgument);
|
|
|
|
if(dwSize < 0)
|
|
{
|
|
delete [] pszMessage;
|
|
return -1;
|
|
}
|
|
|
|
DWORD dwWritten = 0;
|
|
bool bWritten = false;
|
|
|
|
bWritten = ::WriteFile(m_hFile, pszMessage, dwSize, &dwWritten, NULL) ? true : false;
|
|
if(bWritten)
|
|
Flush();
|
|
|
|
delete [] pszMessage;
|
|
|
|
return bWritten ? dwWritten : -1;
|
|
} |