mirror of https://github.com/tongzx/nt5src
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.
146 lines
3.4 KiB
146 lines
3.4 KiB
|
|
/*****************************************************************************\
|
|
|
|
DEBUGAPI.C
|
|
|
|
Confidential
|
|
Copyright (c) Corporation 1998
|
|
All rights reserved
|
|
|
|
Debug API functions for the application to easily output information to
|
|
the debugger.
|
|
|
|
12/98 - Jason Cohen (JCOHEN)
|
|
|
|
|
|
09/2000 - Stephen Lodwick (STELO)
|
|
Ported OPK Wizard to Whistler
|
|
|
|
\*****************************************************************************/
|
|
|
|
|
|
//
|
|
// Include File(s):
|
|
//
|
|
#include "pch.h"
|
|
|
|
// We only want this code include if this is a debug version.
|
|
//
|
|
#ifdef DBG
|
|
|
|
#include <windows.h>
|
|
#include <tchar.h>
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
|
|
|
|
//
|
|
// External Function(s):
|
|
//
|
|
|
|
INT DebugOutW(LPCWSTR lpFileName, LPCWSTR lpFormat, ...)
|
|
{
|
|
INT iChars = -1;
|
|
va_list lpArgs;
|
|
FILE * hFile;
|
|
LPWSTR lpString;
|
|
|
|
// Initialize the lpArgs parameter with va_start().
|
|
//
|
|
va_start(lpArgs, lpFormat);
|
|
|
|
// Open the debug file for output if a file name was passed in.
|
|
//
|
|
if ( lpFileName && ( hFile = _wfopen(lpFileName, L"a") ) )
|
|
{
|
|
// Print the debug message to the file and close it.
|
|
//
|
|
iChars = vfwprintf(hFile, lpFormat, lpArgs);
|
|
fclose(hFile);
|
|
|
|
// Reinitialize the lpArgs parameter with va_start()
|
|
// for the next call to a vptrintf function.
|
|
//
|
|
va_start(lpArgs, lpFormat);
|
|
}
|
|
|
|
// If something failed above, we won't know the size to use
|
|
// for the string buffer, so just default to 2048 characters.
|
|
//
|
|
if ( iChars < 0 )
|
|
iChars = 2047;
|
|
|
|
// Allocate a buffer for the string.
|
|
//
|
|
if ( lpString = (LPWSTR) malloc((iChars + 1) * sizeof(WCHAR)) )
|
|
{
|
|
// Print out the string, send it to the debugger, and free it.
|
|
//
|
|
iChars = StringCchPrintf(lpString, iChars + 1, lpFormat, lpArgs);
|
|
OutputDebugStringW(lpString);
|
|
free(lpString);
|
|
}
|
|
else
|
|
// Use -1 to return an error.
|
|
//
|
|
iChars = -1;
|
|
|
|
// Return the number of characters printed.
|
|
//
|
|
return iChars;
|
|
}
|
|
|
|
INT DebugOutA(LPCSTR lpFileName, LPCSTR lpFormat, ...)
|
|
{
|
|
INT iChars = -1;
|
|
va_list lpArgs;
|
|
FILE * hFile;
|
|
LPSTR lpString;
|
|
|
|
// Initialize the lpArgs parameter with va_start().
|
|
//
|
|
va_start(lpArgs, lpFormat);
|
|
|
|
// Open the debug file for output if a file name was passed in.
|
|
//
|
|
if ( lpFileName && ( hFile = fopen(lpFileName, "a") ) )
|
|
{
|
|
// Print the debug message to the file and close it.
|
|
//
|
|
iChars = vfprintf(hFile, lpFormat, lpArgs);
|
|
fclose(hFile);
|
|
|
|
// Reinitialize the lpArgs parameter with va_start()
|
|
// for the next call to a vptrintf function.
|
|
//
|
|
va_start(lpArgs, lpFormat);
|
|
}
|
|
|
|
// If something failed above, we won't know the size to use
|
|
// for the string buffer, so just default to 2048 characters.
|
|
//
|
|
if ( iChars < 0 )
|
|
iChars = 2047;
|
|
|
|
// Allocate a buffer for the string.
|
|
//
|
|
if ( lpString = (LPSTR) malloc((iChars + 1) * sizeof(CHAR)) )
|
|
{
|
|
// Print out the string, send it to the debugger, and free it.
|
|
//
|
|
iChars = StringCchPrintfA(lpString, iChars + 1, lpFormat, lpArgs);
|
|
OutputDebugStringA(lpString);
|
|
free(lpString);
|
|
}
|
|
else
|
|
// Use -1 to return an error.
|
|
//
|
|
iChars = -1;
|
|
|
|
// Return the number of characters printed.
|
|
//
|
|
return iChars;
|
|
}
|
|
|
|
|
|
#endif // DEBUG or _DEBUG
|