/* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver * * BSD 3-Clause License * * Copyright (c) 2018-2022, Nefarius Software Solutions e.U. and Contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // // Define the tracing flags. // // Tracing GUID - c5ce18fe-27bd-4049-b0b4-8a47cab1dcd9 // #define WPP_CONTROL_GUIDS \ WPP_DEFINE_CONTROL_GUID( \ ViGEmBusTraceGuid, (c5ce18fe,27bd,4049,b0b4,8a47cab1dcd9), \ \ WPP_DEFINE_BIT(MYDRIVER_ALL_INFO) \ WPP_DEFINE_BIT(DMF_TRACE) \ WPP_DEFINE_BIT(TRACE_BUSENUM) \ WPP_DEFINE_BIT(TRACE_BUSPDO) \ WPP_DEFINE_BIT(TRACE_BYTEARRAY) \ WPP_DEFINE_BIT(TRACE_DRIVER) \ WPP_DEFINE_BIT(TRACE_DS4) \ WPP_DEFINE_BIT(TRACE_QUEUE) \ WPP_DEFINE_BIT(TRACE_USBPDO) \ WPP_DEFINE_BIT(TRACE_UTIL) \ WPP_DEFINE_BIT(TRACE_XGIP) \ WPP_DEFINE_BIT(TRACE_XUSB) \ ) #define WPP_FLAG_LEVEL_LOGGER(flag, level) \ WPP_LEVEL_LOGGER(flag) #define WPP_FLAG_LEVEL_ENABLED(flag, level) \ (WPP_LEVEL_ENABLED(flag) && \ WPP_CONTROL(WPP_BIT_ ## flag).Level >= level) #define WPP_LEVEL_FLAGS_LOGGER(lvl,flags) \ WPP_LEVEL_LOGGER(flags) #define WPP_LEVEL_FLAGS_ENABLED(lvl, flags) \ (WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level >= lvl) // // This comment block is scanned by the trace preprocessor to define our // Trace function. // // USEPREFIX and USESUFFIX strip all trailing whitespace, so we need to surround // FuncExit messages with brackets // // begin_wpp config // FUNC Trace{FLAG=MYDRIVER_ALL_INFO}(LEVEL, MSG, ...); // FUNC TraceEvents(LEVEL, FLAGS, MSG, ...); // FUNC FuncEntry{LEVEL=TRACE_LEVEL_VERBOSE}(FLAGS); // FUNC FuncEntryArguments{LEVEL=TRACE_LEVEL_VERBOSE}(FLAGS, MSG, ...); // FUNC FuncExit{LEVEL=TRACE_LEVEL_VERBOSE}(FLAGS, MSG, ...); // FUNC FuncExitVoid{LEVEL=TRACE_LEVEL_VERBOSE}(FLAGS); // FUNC TraceError{LEVEL=TRACE_LEVEL_ERROR}(FLAGS, MSG, ...); // FUNC TraceInformation{LEVEL=TRACE_LEVEL_INFORMATION}(FLAGS, MSG, ...); // FUNC TraceVerbose{LEVEL=TRACE_LEVEL_VERBOSE}(FLAGS, MSG, ...); // FUNC FuncExitNoReturn{LEVEL=TRACE_LEVEL_VERBOSE}(FLAGS); // USEPREFIX(FuncEntry, "%!STDPREFIX! [%!FUNC!] --> Entry"); // USEPREFIX(FuncEntryArguments, "%!STDPREFIX! [%!FUNC!] --> Entry <"); // USEPREFIX(FuncExit, "%!STDPREFIX! [%!FUNC!] <-- Exit <"); // USESUFFIX(FuncExit, ">"); // USEPREFIX(FuncExitVoid, "%!STDPREFIX! [%!FUNC!] <-- Exit"); // USEPREFIX(TraceError, "%!STDPREFIX! [%!FUNC!] ERROR:"); // USEPREFIX(TraceEvents, "%!STDPREFIX! [%!FUNC!] "); // USEPREFIX(TraceInformation, "%!STDPREFIX! [%!FUNC!] "); // USEPREFIX(TraceVerbose, "%!STDPREFIX! [%!FUNC!] "); // USEPREFIX(FuncExitNoReturn, "%!STDPREFIX! [%!FUNC!] <--"); // end_wpp