172 lines
4.9 KiB
C++
172 lines
4.9 KiB
C++
/****************************************************************************
|
|
Copyright information : Copyright (c) 1998-1999 Microsoft Corporation
|
|
File Name : WMICliLog.cpp
|
|
Project Name : WMI Command Line
|
|
Author Name : Ch. Sriramachandramurthy
|
|
Date of Creation (dd/mm/yy) : 4th-October-2000
|
|
Version Number : 1.0
|
|
Brief Description : This class encapsulates the functionality needed
|
|
for logging the input and output.
|
|
Revision History :
|
|
Last Modified By : Ch. Sriramachandramurthy
|
|
Last Modified Date : 28th-December-2000
|
|
*****************************************************************************/
|
|
// WMICliLog.cpp : implementation file
|
|
#include "Precomp.h"
|
|
#include "WmiCliLog.h"
|
|
|
|
|
|
/*------------------------------------------------------------------------
|
|
Name :CWMICliLog
|
|
Synopsis :Constructor
|
|
Type :Constructor
|
|
Input parameter :None
|
|
Output parameters :None
|
|
Return Type :None
|
|
Global Variables :None
|
|
Calling Syntax :None
|
|
Notes :None
|
|
------------------------------------------------------------------------*/
|
|
CWMICliLog::CWMICliLog()
|
|
{
|
|
m_pszLogFile = NULL;
|
|
m_bCreate = FALSE;
|
|
}
|
|
|
|
/*------------------------------------------------------------------------
|
|
Name :~CWMICliLog
|
|
Synopsis :Destructor
|
|
Type :Destructor
|
|
Input parameter :None
|
|
Output parameters :None
|
|
Return Type :None
|
|
Global Variables :None
|
|
Calling Syntax :None
|
|
Notes :None
|
|
------------------------------------------------------------------------*/
|
|
CWMICliLog::~CWMICliLog()
|
|
{
|
|
//Close the File handle
|
|
if (m_bCreate)
|
|
CloseHandle(m_hFile);
|
|
|
|
//Delete the file
|
|
SAFEDELETE(m_pszLogFile);
|
|
}
|
|
|
|
/*------------------------------------------------------------------------
|
|
Name :WriteToLog
|
|
Synopsis :Log the input to the logfile created
|
|
Type :Member Function
|
|
Input parameter :
|
|
pszMsg - string, contents to be written to the log file
|
|
Output parameters :None
|
|
Return Type :void
|
|
Global Variables :None
|
|
Calling Syntax :WriteToLog(pszInput)
|
|
Notes :None
|
|
------------------------------------------------------------------------*/
|
|
void CWMICliLog::WriteToLog(LPSTR pszMsg) throw (WMICLIINT)
|
|
{
|
|
int j = 0;
|
|
if(pszMsg && ((j = strlen(pszMsg)) > 0))
|
|
{
|
|
//if the file has not been created
|
|
if (!m_bCreate)
|
|
{
|
|
try
|
|
{
|
|
//creates the log file
|
|
CreateLogFile();
|
|
}
|
|
catch(WMICLIINT nErr)
|
|
{
|
|
if (nErr == WIN32_FUNC_ERROR)
|
|
throw(WIN32_FUNC_ERROR);
|
|
}
|
|
m_bCreate = TRUE;
|
|
}
|
|
|
|
//No of bytes written into the file .
|
|
DWORD dwNumberOfBytes = 0;
|
|
|
|
//writes data to a file
|
|
if (!WriteFile(m_hFile, pszMsg, j,
|
|
&dwNumberOfBytes, NULL))
|
|
{
|
|
DisplayWin32Error();
|
|
throw(WIN32_FUNC_ERROR);
|
|
}
|
|
}
|
|
}
|
|
|
|
/*------------------------------------------------------------------------
|
|
Name :CreateLogFile
|
|
Synopsis :Create the log file
|
|
Type :Member Function
|
|
Input parameter :None
|
|
Output parameters :None
|
|
Return Type :void
|
|
Global Variables :None
|
|
Calling Syntax :CreateLogFile()
|
|
Notes :None
|
|
------------------------------------------------------------------------*/
|
|
void CWMICliLog::CreateLogFile() throw(WMICLIINT)
|
|
{
|
|
//Create a file and returns the handle
|
|
m_hFile = CreateFile(m_pszLogFile, GENERIC_WRITE, 0,
|
|
NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,
|
|
NULL);
|
|
|
|
if (m_hFile == INVALID_HANDLE_VALUE)
|
|
{
|
|
DisplayWin32Error();
|
|
throw(WIN32_FUNC_ERROR);
|
|
}
|
|
}
|
|
|
|
/*------------------------------------------------------------------------
|
|
Name :SetLogFilePath
|
|
Synopsis :This function sets the m_pszLogFile name with the
|
|
input
|
|
Type :Member Function
|
|
Input parameter :
|
|
pszLogFile - String type,Contains the log file name
|
|
Return Type :void
|
|
Global Variables :None
|
|
Calling Syntax :SetLogFilePath(pszLogFile)
|
|
Notes :None
|
|
------------------------------------------------------------------------*/
|
|
void CWMICliLog::SetLogFilePath(_TCHAR* pszLogFile) throw (WMICLIINT)
|
|
{
|
|
SAFEDELETE(m_pszLogFile);
|
|
m_pszLogFile = new _TCHAR [lstrlen(pszLogFile) + 1];
|
|
if (m_pszLogFile)
|
|
{
|
|
//Copy the input argument into the log file name
|
|
lstrcpy(m_pszLogFile, pszLogFile);
|
|
}
|
|
else
|
|
throw(OUT_OF_MEMORY);
|
|
}
|
|
|
|
/*------------------------------------------------------------------------
|
|
Name :CloseLogFile
|
|
Synopsis :Closes the the log file
|
|
Type :Member Function
|
|
Input parameter :None
|
|
Output parameters :None
|
|
Return Type :void
|
|
Global Variables :None
|
|
Calling Syntax :CloseLogFile()
|
|
Notes :None
|
|
------------------------------------------------------------------------*/
|
|
void CWMICliLog::CloseLogFile()
|
|
{
|
|
//Close the File handle
|
|
if (m_bCreate)
|
|
{
|
|
CloseHandle(m_hFile);
|
|
m_bCreate = FALSE;
|
|
}
|
|
} |