windows-nt/Source/XPSP1/NT/admin/wmi/wbem/tools/wmic/wmiclilog.cpp
2020-09-26 16:20:57 +08:00

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;
}
}