вообщем хочу создать функцию dprintf на основе wsprintf , как правильно передать параметры Код (Text): void dprintf( параметры тут както указать как в wsprintf) { char buff[512]; wsprintf( сюда параметры те что в dprintf); OutputDebugString(buff); }
Код (Text): static char OutputDetailedString[DETAILED_STRING_SIZE] = {0}; static char OutputString[STRING_SIZE] = {0}; static ULONG IoBytesDone = 0; static BOOLEAN ConsoleEnabled = FALSE; VOID DebugMsgEx( IN BOOLEAN IsModuleEnabled, IN BOOLEAN IsDetailedInfoEnabled, IN BOOLEAN DbgModuleMask, IN BOOLEAN IsConsoleEnabled, IN CHAR* pSrcFile, IN CHAR* pSrcFunction, IN ULONG SrcFileLineNumber, IN ULONG Flags, IN CHAR* pSpecs, ... ) { va_list pForwardedList = (va_list)((ULONG)&pSpecs + (ULONG)sizeof(pSpecs)); if(IsModuleEnabled && Flags&DbgModuleMask) { if(IsDetailedInfoEnabled) { wsprintfA( OutputDetailedString, "%s, %s(%.06d): ", pSrcFile, pSrcFunction, SrcFileLineNumber ); wvsprintfA(OutputString, pSpecs, pForwardedList); lstrcatA(OutputDetailedString, OutputString); if(IsConsoleEnabled) { if(!ConsoleEnabled) { AllocConsole(); ConsoleEnabled = TRUE; } WriteConsoleA( GetStdHandle(STD_OUTPUT_HANDLE), OutputDetailedString, lstrlenA(OutputDetailedString), &IoBytesDone, NULL ); } else { OutputDebugStringA(OutputDetailedString); } } else { wvsprintfA(OutputString, pSpecs, pForwardedList); if(IsConsoleEnabled) { if(!ConsoleEnabled) { AllocConsole(); ConsoleEnabled = TRUE; } WriteConsoleA( GetStdHandle(STD_OUTPUT_HANDLE), OutputString, lstrlenA(OutputString), &IoBytesDone, NULL ); } else { OutputDebugStringA(OutputString); } } } }
add^ Код (Text): #define DbgTrace(...) \ DebugMsgEx( \ DBG_MODULE_ENABLED, \ DBG_DETAILED_ENABLED, \ DBG_MODULE_MASK, \ DBG_CONSOLE_ENABLED, \ __FILE__, \ __FUNCTION__, \ __LINE__, \ DBG_TRACE, \ __VA_ARGS__ \ )
Код (Text): void dprintf(LPTSTR lpFormat, ...) { va_list args; va_start(args, lpFormat); _vtprintf(lpFormat, args); va_end(args); } Так?..
спасибо всем, вопрос решен... дык DbgPrint ее ж тока из ring0 можно использовать ?!... меня интересует в ring3
karabas_barabas Что значить только. Она экспортируется нтдлл. Если есть в экспорте ядра, это не значит что нет в юзермоде