DECLCALLBACK(void) VBoxWddmUmLog(const char *pszString) { char szBuffer[4096]; const int cbBuffer = sizeof(szBuffer); char *pszBuffer = &szBuffer[0]; int cbWritten = _snprintf(pszBuffer, cbBuffer, "['%s' 0x%x.0x%x]: ", vboxUmLogGetModuleName(), GetCurrentProcessId(), GetCurrentThreadId()); if (cbWritten < 0 || cbWritten >= cbBuffer) { Assert(0); pszBuffer[0] = 0; cbWritten = 0; } const size_t cbLeft = cbBuffer - cbWritten; const size_t cbString = strlen(pszString) + 1; if (cbString <= cbLeft) { memcpy(pszBuffer + cbWritten, pszString, cbString); } else { memcpy(pszBuffer + cbWritten, pszString, cbLeft - 1); pszBuffer[cbWritten + cbLeft - 1] = 0; } VBoxDispMpLoggerLog(szBuffer); }
DECLCALLBACK(void) VBoxDispMpLoggerLogF(const char *pszString, ...) { char szBuffer[4096] = {0}; va_list pArgList; va_start(pArgList, pszString); _vsnprintf(szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0]), pszString, pArgList); va_end(pArgList); VBoxDispMpLoggerLog(szBuffer); }
VBOXDISPMPLOGGER_DECL(void) VBoxDispMpLoggerLogF(const char *pszString, ...) { PVBOXDISPMPLOGGER pLogger = vboxDispMpLoggerGet(); if (!pLogger) return; char szBuffer[4096] = {0}; va_list pArgList; va_start(pArgList, pszString); _vsnprintf(szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0]), pszString, pArgList); va_end(pArgList); VBoxDispMpLoggerLog(szBuffer); }