--- /dev/null
+#pragma once
+
+extern int virtioDebugLevel;
+extern int bDebugPrint;
+typedef void (*tDebugPrintFunc)(const char *format, ...);
+extern tDebugPrintFunc VirtioDebugPrintProc;
+
+#define DPrintf(Level, MSG, ...) if ((!bDebugPrint) || Level > virtioDebugLevel) {} else VirtioDebugPrintProc(MSG, __VA_ARGS__)
+
+#define DEBUG_ENTRY(level) DPrintf(level, "[%s]=>\n", __FUNCTION__)
+#define DEBUG_EXIT_STATUS(level, status) DPrintf((status == NDIS_STATUS_SUCCESS ? level : 0), "[%s]<=0x%X\n", __FUNCTION__, (status))