1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
/*========================== begin_copyright_notice ============================
Copyright (C) 2019-2021 Intel Corporation
SPDX-License-Identifier: MIT
============================= end_copyright_notice ===========================*/
#pragma once
#ifdef __cplusplus
#ifdef _WIN32
#include <stdio.h>
#if defined ISTDLIB_KMD
# include <stdarg.h>
#endif
#if defined ISTDLIB_UMD && !defined UNIT_TESTING
# include <wtypes.h>
# include <winbase.h>
#endif
namespace iSTD
{
/*****************************************************************************\
Extern: EngDebugPrint
Defined in winddi.h
\*****************************************************************************/
#if defined(ISTDLIB_KMD)
extern "C" void APIENTRY EngDebugPrint( PCHAR, PCHAR, va_list );
#endif
/*****************************************************************************\
Inline Function: PrintMessage
PURPOSE: Prints a message for both debug and release drivers
\*****************************************************************************/
inline void __cdecl PrintMessage( char* str, ... )
{
if( str )
{
va_list args;
va_start( args, str );
const size_t length = ::_vscprintf( str, args ) + 1;
char* temp = new char[ length ];
if( temp )
{
#if defined(ISTDLIB_KMD)
// Send message to kernel debugger
::_vsnprintf( temp, length, str, args );
EngDebugPrint( "INTC: ", "%s", (PCHAR)&temp );
#elif defined(ISTDLIB_UMD)
#ifndef UNIT_TESTING
::_vsnprintf_s( temp, length, length, str, args );
OutputDebugStringA( "INTC: " );
OutputDebugStringA( temp );
#endif
#endif
delete[] temp;
}
va_end( args );
}
}
} // namespace iSTD
#endif // _WIN32
#endif // __cplusplus
|