windows-nt/Source/XPSP1/NT/printscan/ui/compstui/debug.c
2020-09-26 16:20:57 +08:00

421 lines
9.7 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
Copyright (c) 1990-1995 Microsoft Corporation
Module Name:
debug.c
Abstract:
This module contains all debugging routines
Author:
30-Aug-1995 Wed 19:01:07 created -by- Daniel Chou (danielc)
[Environment:]
NT Windows - Common Printer Driver UI DLL.
[Notes:]
Revision History:
--*/
#include "precomp.h"
#pragma hdrstop
#if DBG
BOOL DoCPSUIWarn = TRUE;
BOOL DoDbgMsg = TRUE;
BOOL DoIntMsg = FALSE;
LPSTR pTVOTName[] = { "TVOT_2STATES",
"TVOT_3STATES",
"TVOT_UDARROW",
"TVOT_TRACKBAR",
"TVOT_SCROLLBAR",
"TVOT_LISTBOX",
"TVOT_COMBOBOX",
"TVOT_EDITBOX",
"TVOT_PUSHBUTTON",
"TVOT_CHKBOX" };
LPSTR pDMPubName[] = { "DMPUB_NONE",
"DMPUB_ORIENTATION",
"DMPUB_SCALE",
"DMPUB_COPIES_COLLATE",
"DMPUB_DEFSOURCE",
"DMPUB_PRINTQUALITY",
"DMPUB_COLOR",
"DMPUB_DUPLEX",
"DMPUB_TTOPTION",
"DMPUB_FORMNAME",
"DMPUB_ICMMETHOD",
"DMPUB_ICMINTENT",
"DMPUB_MEDIATYPE",
"DMPUB_DITHERTYPE",
"DMPUB_OUTPUTBIN",
"DMPUB_QUALITY",
"DMPUB_NUP",
"DMPUB_PAGEORDER",
"<DMPUB_USER>"
};
VOID
cdecl
CPSUIDbgPrint(
LPSTR pszFormat,
...
)
/*++
Routine Description:
This fucntion output the debug informat to the debugger
Arguments:
pszFormat - format string
... - variable data
Return Value:
VOID
Author:
30-Aug-1995 Wed 19:10:34 updated -by- Daniel Chou (danielc)
Revision History:
--*/
{
va_list vaList;
static WCHAR OutBuf[768];
static WCHAR FormatBuf[256];
//
// We assume that UNICODE flag is turn on for the compilation, bug the
// format string passed to here is ASCII version, so we need to convert
// it to LPWSTR before the wvsprintf()
//
va_start(vaList, pszFormat);
MultiByteToWideChar(CP_ACP, 0, pszFormat, -1, FormatBuf, ARRAYSIZE(FormatBuf));
wvnsprintf(OutBuf, ARRAYSIZE(OutBuf) - 1, FormatBuf, vaList);
va_end(vaList);
OutputDebugString((LPTSTR)OutBuf);
OutputDebugString(L"\n");
}
VOID
CPSUIDbgType(
INT Type
)
/*++
Routine Description:
this function output the ERROR/WARNING message
Arguments:
Type
Return Value:
Author:
30-Aug-1995 Wed 19:10:42 updated -by- Daniel Chou (danielc)
Revision History:
--*/
{
static WCHAR DebugDLLName[] = L"ComPstUI";
if (Type) {
OutputDebugString((Type < 0) ? L"ERROR: " : L"WARNING: ");
}
OutputDebugString(DebugDLLName);
OutputDebugString(L": ");
}
VOID
_CPSUIAssert(
LPSTR pMsg,
LPSTR pFalseExp,
LPSTR pFilename,
UINT LineNo,
LPVOID Exp,
BOOL Stop
)
/*++
Routine Description:
This function output assertion message and false expression to the debugger
then break into the debugger
Arguments:
pMsg - Message to displayed
pFlaseExp - false expression
pFilename - source filename
LineNo - line number of the flase expression
Return Value:
VOID
Author:
30-Aug-1995 Wed 19:10:49 updated -by- Daniel Chou (danielc)
Revision History:
--*/
{
OutputDebugString(L"\n");
if ((pMsg) && (*pMsg)) {
CPSUIDbgPrint(pMsg, Exp);
}
CPSUIDbgPrint("Assertion failed (%hs) in %hs line %u",
pFalseExp, pFilename, LineNo);
if (Stop) {
DebugBreak();
}
}
VOID
CPSUIDbgShowItem(
PTVWND pTVWnd,
LPSTR pTitle,
UINT Level,
POPTITEM pItem
)
{
if (pItem) {
POPTTYPE pOptType;
POPTPARAM pOptParam;
PEXTCHKBOX pECB = pItem->pExtChkBox;
UINT i;
GSBUF_DEF(pItem, MAX_RES_STR_CHARS);
if (pOptType = pItem->pOptType) {
pOptParam = pOptType->pOptParam;
} else {
pOptParam = NULL;
}
CPSUIDbgPrint("\n---- %hs OPTITEM = %08lx -----", pTitle, pItem);
CPSUIDbgPrint("cbSize = %ld", (DWORD)pItem->cbSize);
CPSUIDbgPrint("pOptType = %08lx", pItem->pOptType);
GSBUF_GETSTR(pItem->pName);
CPSUIDbgPrint("pName = %ws", GSBUF_BUF);
GSBUF_RESET;
if ((pOptType) && (pOptParam)) {
switch (pOptType->Type) {
case TVOT_LISTBOX:
case TVOT_2STATES:
case TVOT_3STATES:
case TVOT_COMBOBOX:
if ((pItem->Sel < 0) || (pItem->Sel > pOptType->Count)) {
GSBUF_GETSTR(pTVWnd->OptParamNone.pData);
} else {
GSBUF_GETSTR(pOptParam[pItem->Sel].pData);
}
break;
case TVOT_EDITBOX:
GSBUF_GETSTR(pItem->pSel);
break;
case TVOT_UDARROW:
case TVOT_TRACKBAR:
case TVOT_SCROLLBAR:
case TVOT_PUSHBUTTON:
case TVOT_CHKBOX:
break;
}
}
CPSUIDbgPrint("pSel = %ld, Name:<%ws> [%08lx]", pItem->pSel,
GSBUF_BUF, pItem->pSel);
CPSUIDbgPrint("UserData = %08lx", pItem->UserData);
CPSUIDbgPrint("pExtChkBox = %08lx", pECB);
if ((Level > 0) && (pECB)) {
if (pItem->Flags & OPTIF_EXT_IS_EXTPUSH) {
PEXTPUSH pEP = (PEXTPUSH)pECB;
CPSUIDbgPrint(" ---- PEXTPUSH ----");
CPSUIDbgPrint(" cbSize = %ld", (DWORD)pEP->cbSize);
CPSUIDbgPrint(" Flags = %02lx", (DWORD)pEP->Flags);
GSBUF_RESET;
GSBUF_GETSTR(pEP->pTitle);
CPSUIDbgPrint(" pTitle = %ws", GSBUF_BUF);
CPSUIDbgPrint(" DlgProc/pfnCallBack = %08lx", pEP->DlgProc);
CPSUIDbgPrint(" IconID = %0ld", pEP->IconID);
CPSUIDbgPrint(" DlgTemplateID = %0ld", pEP->DlgTemplateID);
CPSUIDbgPrint(" ~~~~~~~~~~~~~~~~~~~~");
} else {
CPSUIDbgPrint(" ---- PEXTCHKBOX ----");
CPSUIDbgPrint(" cbSize = %ld", (DWORD)pECB->cbSize);
CPSUIDbgPrint(" Flags = %02lx", (DWORD)pECB->Flags);
GSBUF_RESET;
GSBUF_GETSTR(pECB->pTitle);
CPSUIDbgPrint(" pTitle = %ws", GSBUF_BUF);
GSBUF_RESET;
GSBUF_GETSTR(pECB->pSeparator);
CPSUIDbgPrint(" pSeparator = %ws", GSBUF_BUF);
GSBUF_RESET;
GSBUF_GETSTR(pECB->pCheckedName);
CPSUIDbgPrint(" pCheckBoxName = %ws", GSBUF_BUF);
CPSUIDbgPrint(" IconID = %0ld", pECB->IconID);
CPSUIDbgPrint(" ~~~~~~~~~~~~~~~~~~~~");
}
}
if ((i = pItem->DMPubID) > DMPUB_LAST) {
i = DMPUB_LAST + 1;
}
CPSUIDbgPrint("Flags = 0x%08lx", (DWORD)pItem->Flags);
CPSUIDbgPrint("HelpIndex = %ld", (DWORD)pItem->HelpIndex);
CPSUIDbgPrint("Level = %ld", (DWORD)pItem->Level);
CPSUIDbgPrint("DMPubID = %hs (%ld)", pDMPubName[i], (DWORD)pItem->DMPubID);
CPSUIDbgPrint("DlgPageIdx = %ld", (DWORD)pItem->DlgPageIdx);
CPSUIDbgPrint("HTREEITEM = %08lx", _OI_HITEM(pItem));
CPSUIDbgPrint("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
if ((Level > 0) && (pOptType)) {
CPSUIDbgPrint(" ------- OPTTYPE --------");
CPSUIDbgPrint(" cbSize = %ld", (DWORD)pOptType->cbSize);
CPSUIDbgPrint(" Type = %hs", pTVOTName[pOptType->Type]);
CPSUIDbgPrint(" Flags = %02lx", (DWORD)pOptType->Flags);
CPSUIDbgPrint(" Count = %ld", (DWORD)pOptType->Count);
CPSUIDbgPrint(" BegCtrlID = %ld", (DWORD)pOptType->BegCtrlID);
CPSUIDbgPrint(" pOptParam = %08lx", pOptParam);
CPSUIDbgPrint(" Style = %04lx", (DWORD)pOptType->Style);
CPSUIDbgPrint(" ~~~~~~~~~~~~~~~~~~~~~~~~");
if ((Level > 1) && (pOptParam)) {
i = pOptType->Count;
for (i = 0; i < (UINT)pOptType->Count; i++, pOptParam++) {
GSBUF_RESET;
GSBUF_GETSTR(pOptParam->pData);
CPSUIDbgPrint(" ------- OPTPARAM %ld -------", (DWORD)i);
CPSUIDbgPrint(" cbSize = %ld ", (DWORD)pOptParam->cbSize);
CPSUIDbgPrint(" Flags = %02lx", (DWORD)pOptParam->Flags);
CPSUIDbgPrint(" Style = %ld", (DWORD)pOptParam->Style);
CPSUIDbgPrint(" pData = %ws (%08lx)", GSBUF_BUF, pOptParam->pData);
CPSUIDbgPrint(" IconID = %ld", (DWORD)pOptParam->IconID);
CPSUIDbgPrint(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
}
}
CPSUIDbgPrint("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
} else {
CPSUIDbgPrint("\n\n---- %hs OPTITEM = %08lx -----", pTitle, pItem);
}
}
#endif // DBG