Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

150 lines
2.8 KiB

////////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2000, Microsoft Corporation.
//
// All rights reserved.
//
// Module Name:
//
// _log.h
//
// Abstract:
//
// declaration of log module and class
//
// History:
//
// initial a-marius
//
////////////////////////////////////////////////////////////////////////////////////
#ifndef __MY_LOG_H__
#define __MY_LOG_H__
#if _MSC_VER > 1000
#pragma once
#endif _MSC_VER > 1000
#ifdef __SUPPORT_LOGGING
////////////////////////////////////////////////////////////////////////////////////
// abstract base
////////////////////////////////////////////////////////////////////////////////////
template < class __DUMMY >
class ATL_NO_VTABLE MyLog
{
DECLARE_NO_COPY ( MyLog );
public:
MyLog ( )
{
}
~MyLog ( )
{
}
HRESULT Log ( LPCWSTR wszName, DWORD dwResult );
HRESULT Log ( LPCWSTR wszName );
};
template < class __DUMMY >
HRESULT MyLog < __DUMMY > :: Log ( LPCWSTR wszName, DWORD dwResult )
{
HRESULT hr = E_OUTOFMEMORY;
WCHAR* psz = NULL;
if ( !wszName )
{
hr = E_INVALIDARG;
}
else
{
try
{
DWORD cchSize = lstrlenW ( wszName ) + 1 + 2 + 8 + 1 + 1;
if ( ( psz = new WCHAR [ cchSize ] ) != NULL )
{
if ( SUCCEEDED ( hr = StringCchPrintfW ( psz, cchSize, L"%s %08x", wszName, dwResult ) ) )
{
hr = Log ( psz );
}
}
}
catch ( ... )
{
hr = E_UNEXPECTED;
}
if ( psz )
{
delete [] psz;
psz = NULL;
}
}
return hr;
}
template < class __DUMMY >
HRESULT MyLog < __DUMMY > :: Log ( LPCWSTR wszName )
{
HRESULT hr = E_OUTOFMEMORY;
if ( !wszName )
{
hr = E_INVALIDARG;
}
else
{
DWORD dwThreadId = 0L;
SYSTEMTIME systime;
dwThreadId = ::GetCurrentThreadId ();
::GetSystemTime ( &systime );
WCHAR* psz = NULL;
try
{
DWORD cchSize = lstrlenW ( wszName ) + 1 + 2 + 8 + 1 + 2 + 3 + 2 + 3 + 2 + 3 + 2 + 3 + 1 + 1;
if ( ( psz = new WCHAR [ cchSize ] ) != NULL )
{
if ( SUCCEEDED ( hr = StringCchPrintfW ( psz, cchSize, L"%s %08x %02d:%02d:%02d:%02d\n", wszName, dwThreadId, systime.wHour, systime.wMinute, systime.wSecond, systime.wMilliseconds ) ) )
{
OutputDebugString ( psz );
hr = S_OK;
}
}
}
catch ( ... )
{
hr = E_UNEXPECTED;
}
if ( psz )
{
delete [] psz;
psz = NULL;
}
}
return hr;
}
__declspec ( selectany ) MyLog< void > log;
// macros
#define AdapterLogMessage0(lpszMessage) log.Log ( lpszMessage )
#define AdapterLogMessage1(lpszMessage, dwResult) log.Log ( lpszMessage, dwResult )
#else __SUPPORT_LOGGING
// macros
#define AdapterLogMessage0(lpszMessage)
#define AdapterLogMessage1(lpszMessage, dwResult)
#endif __SUPPORT_LOGGING
#endif __MY_LOG_H__