base
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user