You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
3.5 KiB
159 lines
3.5 KiB
#include "pch.h"
|
|
|
|
#if DBG
|
|
|
|
SOFTPCI_DEBUGLEVEL g_SoftPCIDebugLevel = SoftPciAlways;
|
|
|
|
WCHAR g_SoftPCIDebugBuffer[SOFTPCI_DEBUG_BUFFER_SIZE];
|
|
|
|
#define MAX_BUF_SIZE 512
|
|
|
|
VOID
|
|
SoftPCI_DebugPrint(
|
|
SOFTPCI_DEBUGLEVEL DebugLevel,
|
|
PWCHAR DebugMessage,
|
|
...
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Debug print for SoftPCI UI.
|
|
|
|
Arguments:
|
|
|
|
|
|
Return Value:
|
|
|
|
None
|
|
|
|
--*/
|
|
|
|
{
|
|
|
|
va_list ap;
|
|
WCHAR debugBuffer[SOFTPCI_DEBUG_BUFFER_SIZE];
|
|
|
|
va_start(ap, DebugMessage);
|
|
|
|
if ((DebugLevel == SoftPciAlways) ||
|
|
(DebugLevel & g_SoftPCIDebugLevel)) {
|
|
|
|
_vsnwprintf(debugBuffer, (sizeof(debugBuffer)/sizeof(debugBuffer[0])), DebugMessage, ap);
|
|
|
|
if (!(DebugLevel & SoftPciNoPrepend)) {
|
|
wcscpy(g_SoftPCIDebugBuffer, L"SOFTPCI: ");
|
|
wcscat(g_SoftPCIDebugBuffer, debugBuffer);
|
|
}else{
|
|
wcscpy(g_SoftPCIDebugBuffer, debugBuffer);
|
|
}
|
|
|
|
|
|
OutputDebugString(g_SoftPCIDebugBuffer);
|
|
}
|
|
|
|
va_end(ap);
|
|
|
|
}
|
|
|
|
|
|
VOID
|
|
SoftPCI_Assert(
|
|
IN CONST CHAR* FailedAssertion,
|
|
IN CONST CHAR* FileName,
|
|
IN ULONG LineNumber,
|
|
IN CONST CHAR* Message OPTIONAL
|
|
)
|
|
{
|
|
|
|
INT result;
|
|
CHAR buffer[MAX_BUF_SIZE];
|
|
PWCHAR wbuffer = NULL, p;
|
|
|
|
sprintf(buffer,
|
|
"%s%s\nSource File: %s, line %ld\n\n",
|
|
Message ? Message : "",
|
|
Message ? "" : FailedAssertion,
|
|
FileName,
|
|
LineNumber
|
|
);
|
|
|
|
wbuffer = (PWCHAR) malloc(MAX_BUF_SIZE * sizeof(WCHAR));
|
|
|
|
if (wbuffer) {
|
|
|
|
//
|
|
// Build a string to output to the debugger window
|
|
//
|
|
p = wbuffer;
|
|
|
|
if (Message == NULL) {
|
|
wcscpy(wbuffer, L"\nAssertion Failed: ");
|
|
p += wcslen(wbuffer);
|
|
}
|
|
|
|
//
|
|
// Convert it to unicode so we can debug print it.
|
|
//
|
|
MultiByteToWideChar(CP_THREAD_ACP,
|
|
MB_PRECOMPOSED,
|
|
buffer,
|
|
-1,
|
|
p,
|
|
MAX_BUF_SIZE
|
|
);
|
|
|
|
|
|
}
|
|
|
|
strcat(buffer, "OK to debug, CANCEL to ignore\n\n");
|
|
|
|
result = MessageBoxA(g_SoftPCIMainWnd ? g_SoftPCIMainWnd : NULL,
|
|
buffer,
|
|
"*** Assertion failed ***",
|
|
MB_OKCANCEL);
|
|
|
|
if (wbuffer) {
|
|
SoftPCI_Debug(SoftPciAlways, wbuffer);
|
|
free(wbuffer);
|
|
}
|
|
|
|
if (result == IDOK) {
|
|
//
|
|
// User wants to debug this so init a breakin
|
|
//
|
|
DebugBreak();
|
|
}
|
|
}
|
|
|
|
VOID
|
|
SoftPCI_DebugDumpConfig(
|
|
IN PPCI_COMMON_CONFIG Config
|
|
)
|
|
{
|
|
|
|
|
|
PULONG p = (PULONG)&Config;
|
|
ULONG i = 0;
|
|
|
|
//
|
|
// Dump the configspace buffer we are going to send in the ioctl
|
|
//
|
|
SoftPCI_Debug(SoftPciDeviceVerbose, L"CreateDevice - ConfigSpace\n");
|
|
|
|
for (i=0; i < (sizeof(PCI_COMMON_CONFIG) / sizeof(ULONG)); i++) {
|
|
|
|
SoftPCI_Debug(SoftPciDeviceVerbose | SoftPciNoPrepend, L"%08x", *p);
|
|
|
|
if ((((i+1) % 4) == 0) ||
|
|
((i+1) == (sizeof(PCI_COMMON_CONFIG) / sizeof(ULONG)))) {
|
|
SoftPCI_Debug(SoftPciDeviceVerbose | SoftPciNoPrepend, L"\n");
|
|
}else{
|
|
SoftPCI_Debug(SoftPciDeviceVerbose | SoftPciNoPrepend, L",");
|
|
}
|
|
p++;
|
|
}
|
|
|
|
}
|
|
#endif
|