VOID MyDebugPrint (const unsigned char* format, ...) { if (g_Debug.text && g_Debug.capacity > 0 && CAN_WE_PRINT) { BOOLEAN owned; ACQUIRE_MUTEX_ADAPTIVE (&g_Debug.lock, owned); if (owned) { const int remaining = (int)g_Debug.capacity - (int)g_Debug.out; if (remaining > 0) { va_list args; NTSTATUS status; char *end; #ifdef DBG_PRINT va_start (args, format); vDbgPrintEx (DPFLTR_IHVNETWORK_ID, DPFLTR_INFO_LEVEL, format, args); va_end (args); #endif va_start (args, format); status = RtlStringCchVPrintfExA (g_Debug.text + g_Debug.out, remaining, &end, NULL, STRSAFE_NO_TRUNCATION | STRSAFE_IGNORE_NULLS, format, args); va_end (args); va_start (args, format); vDbgPrintEx(DPFLTR_IHVDRIVER_ID , 1, format, args); va_end (args); if (status == STATUS_SUCCESS) g_Debug.out = (unsigned int) (end - g_Debug.text); else g_Debug.error = TRUE; } else g_Debug.error = TRUE; RELEASE_MUTEX (&g_Debug.lock); } else g_Debug.error = TRUE; } }
static void DebugPrintFunc(const char *format, ...) { va_list list; va_start(list, format); vDbgPrintEx(DPFLTR_DEFAULT_ID, 9 | DPFLTR_MASK, format, list); va_end(list); }
_Use_decl_annotations_ VOID SimBattPrint ( ULONG Level, PCSTR Format, ... ) /*++ Routine Description: This routine emits the debugger message. Arguments: Level - Supplies the criticality of message being printed. Format - Message to be emitted in varible argument format. Return Value: None. --*/ { va_list Arglist; va_start(Arglist, Format); vDbgPrintEx(DPFLTR_IHVDRIVER_ID, Level, Format, Arglist); }
ULONG __cdecl GoogleDbgPrint(char* format, ...) { va_list arg_list; va_start(arg_list, format); ULONG ret = vDbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, format, arg_list); va_end(arg_list); return ret; }
void DsmDebugPrint(ULONG DebugPrintLevel, PCCHAR DebugMessage, ...) { va_list ap; va_start(ap, DebugMessage); vDbgPrintEx(DPFLTR_IHVDRIVER_ID, DebugPrintLevel, DebugMessage, ap); va_end(ap); }
void AcpiOsVprintf ( const char *Fmt, va_list Args) { #ifndef NDEBUG vDbgPrintEx (-1, DPFLTR_ERROR_LEVEL, Fmt, Args); #endif return; }
// This functions mimics printf() but does not return the same value as printf() // would do. printf() is required to exercise regression tests. _Use_decl_annotations_ int __cdecl printf(const char * format, ...) { NTSTATUS status; va_list args; va_start(args, format); status = vDbgPrintEx(DPFLTR_DEFAULT_ID, DPFLTR_ERROR_LEVEL, format, args); va_end(args); return NT_SUCCESS(status); }