1 /*++ 2 3 Copyright (c) Microsoft Corporation 4 5 ModuleName: 6 7 MxGeneralUm.cpp 8 9 Abstract: 10 11 Implementation of MxGeneralUm functions. 12 13 Author: 14 15 16 17 Revision History: 18 19 20 21 --*/ 22 23 #include "Mx.h" 24 25 #include <strsafe.h> 26 27 #include "fxmin.hpp" 28 29 extern "C" IUMDFPlatform *g_IUMDFPlatform; 30 31 VOID 32 Mx::MxDbgPrint( 33 __drv_formatString(printf) 34 __in PCSTR DebugMessage, 35 ... 36 ) 37 { 38 #if DBG 39 40 #define TEMP_BUFFER_SIZE 1024 41 va_list list; 42 CHAR debugMessageBuffer[TEMP_BUFFER_SIZE]; 43 HRESULT hr; 44 45 va_start(list, DebugMessage); 46 47 if (DebugMessage) { 48 49 // 50 // Using new safe string functions instead of _vsnprintf. 51 // This function takes care of NULL terminating if the message 52 // is longer than the buffer. 53 // 54 hr = StringCbVPrintfA( debugMessageBuffer, 55 sizeof(debugMessageBuffer), 56 DebugMessage, 57 list ); 58 if(!SUCCEEDED(hr)) { 59 OutputDebugStringA("WDF DbgPrint: Unable to expand: "); 60 OutputDebugStringA(DebugMessage); 61 } 62 else { 63 OutputDebugStringA(debugMessageBuffer); 64 } 65 } 66 va_end(list); 67 68 #else 69 UNREFERENCED_PARAMETER(DebugMessage); 70 #endif 71 return; 72 } 73 74 VOID 75 Mx::MxBugCheckEx( 76 _In_ ULONG BugCheckCode, 77 _In_ ULONG_PTR BugCheckParameter1, 78 _In_ ULONG_PTR BugCheckParameter2, 79 _In_ ULONG_PTR BugCheckParameter3, 80 _In_ ULONG_PTR BugCheckParameter4 81 ) 82 { 83 84 UNREFERENCED_PARAMETER(BugCheckParameter1); 85 UNREFERENCED_PARAMETER(BugCheckParameter2); 86 UNREFERENCED_PARAMETER(BugCheckParameter3); 87 UNREFERENCED_PARAMETER(BugCheckParameter4); 88 89 FX_VERIFY(DRIVER(BadAction, BugCheckCode), TRAPMSG("UMDF verification " 90 "faults should not call this code path")); 91 UNREACHABLE; 92 } 93 94 VOID 95 Mx::MxGlobalInit( 96 VOID 97 ) 98 { 99 // 100 // Currently just a placeholder. If there is any global initialization 101 // needed for the user-mode primitives, it can be done here. 102 // 103 } 104 105 VOID 106 Mx::MxDetachDevice( 107 _Inout_ MdDeviceObject Device 108 ) 109 { 110 111 112 113 114 115 HRESULT hrDetachDev = 116 Device->GetDeviceStackInterface()->DetachDevice(Device); 117 118 119 120 121 122 UNREFERENCED_PARAMETER(hrDetachDev); 123 } 124 125