mirror of
https://github.com/reactos/reactos.git
synced 2025-05-06 18:31:26 +00:00

Not all files are included, but these are necessary to compile cdrom driver. So far it can only be statically linked with drivers, a proper implementation requires wdfldr helper driver
130 lines
2.8 KiB
C++
130 lines
2.8 KiB
C++
/*++
|
|
|
|
Copyright (c) Microsoft Corporation
|
|
|
|
ModuleName:
|
|
|
|
DbgTrace.cpp
|
|
|
|
Abstract:
|
|
|
|
Temporary file to be used until ETW can be used
|
|
for UM
|
|
|
|
Author:
|
|
|
|
|
|
|
|
Revision History:
|
|
|
|
|
|
|
|
--*/
|
|
|
|
#include "fxobjectpch.hpp"
|
|
|
|
#if FX_CORE_MODE==FX_CORE_USER_MODE
|
|
#include "strsafe.h"
|
|
#endif
|
|
|
|
#if !defined(EVENT_TRACING)
|
|
|
|
VOID
|
|
__cdecl
|
|
DoTraceLevelMessage(
|
|
__in PVOID FxDriverGlobals,
|
|
__in ULONG DebugPrintLevel,
|
|
__in ULONG DebugPrintFlag,
|
|
__drv_formatString(FormatMessage)
|
|
__in PCSTR DebugMessage,
|
|
...
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Print the trace message to debugger.
|
|
|
|
Arguments:
|
|
|
|
TraceEventsLevel - print level between 0 and 3, with 3 the most verbose
|
|
|
|
Return Value:
|
|
|
|
None.
|
|
|
|
--*/
|
|
{
|
|
#if DBG
|
|
UNREFERENCED_PARAMETER(FxDriverGlobals);
|
|
|
|
#define TEMP_BUFFER_SIZE 1024
|
|
va_list list;
|
|
CHAR debugMessageBuffer[TEMP_BUFFER_SIZE];
|
|
NTSTATUS status;
|
|
|
|
va_start(list, DebugMessage);
|
|
|
|
if (DebugMessage) {
|
|
|
|
//
|
|
// Using new safe string functions instead of _vsnprintf.
|
|
// This function takes care of NULL terminating if the message
|
|
// is longer than the buffer.
|
|
//
|
|
#if FX_CORE_MODE==FX_CORE_KERNEL_MODE
|
|
status = RtlStringCbVPrintfA( debugMessageBuffer,
|
|
sizeof(debugMessageBuffer),
|
|
DebugMessage,
|
|
list );
|
|
#else
|
|
HRESULT hr;
|
|
hr = StringCbVPrintfA( debugMessageBuffer,
|
|
sizeof(debugMessageBuffer),
|
|
DebugMessage,
|
|
list );
|
|
|
|
|
|
if (HRESULT_FACILITY(hr) == FACILITY_WIN32)
|
|
{
|
|
status = WinErrorToNtStatus(HRESULT_CODE(hr));
|
|
}
|
|
else
|
|
{
|
|
status = SUCCEEDED(hr) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
|
|
}
|
|
#endif
|
|
if(!NT_SUCCESS(status)) {
|
|
|
|
#if FX_CORE_MODE==FX_CORE_KERNEL_MODE
|
|
DbgPrint ("WDFTrace: RtlStringCbVPrintfA failed 0x%x\n", status);
|
|
#else
|
|
OutputDebugString("WDFTrace: Unable to expand: ");
|
|
OutputDebugString(DebugMessage);
|
|
#endif
|
|
return;
|
|
}
|
|
if (DebugPrintLevel <= TRACE_LEVEL_ERROR ||
|
|
(DebugPrintLevel <= DebugLevel &&
|
|
((DebugPrintFlag & DebugFlag) == DebugPrintFlag))) {
|
|
#if FX_CORE_MODE==FX_CORE_KERNEL_MODE
|
|
DbgPrint("WDFTrace: %s\n", debugMessageBuffer);
|
|
#else
|
|
OutputDebugString("WDFTrace: ");
|
|
OutputDebugString(DebugMessage);
|
|
#endif
|
|
}
|
|
}
|
|
va_end(list);
|
|
|
|
return;
|
|
#else
|
|
UNREFERENCED_PARAMETER(FxDriverGlobals);
|
|
UNREFERENCED_PARAMETER(DebugPrintLevel);
|
|
UNREFERENCED_PARAMETER(DebugPrintFlag);
|
|
UNREFERENCED_PARAMETER(DebugMessage);
|
|
#endif
|
|
}
|
|
|
|
#endif
|