329 lines
14 KiB
C
329 lines
14 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 2000 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
trdebug.c
|
||
|
|
||
|
Abstract: This module contains all the debug functions.
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
User mode
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Michael Tsang (MikeTs) 13-Mar-2000
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "pch.h"
|
||
|
|
||
|
#ifdef TRDEBUG
|
||
|
|
||
|
int giTRVerboseLevel = 0;
|
||
|
NAMETABLE WMMsgNames[] =
|
||
|
{
|
||
|
WM_NULL, "Null",
|
||
|
WM_CREATE, "Create",
|
||
|
WM_DESTROY, "Destroy",
|
||
|
WM_MOVE, "Move",
|
||
|
WM_SIZE, "Size",
|
||
|
WM_ACTIVATE, "Activate",
|
||
|
WM_SETFOCUS, "SetFocus",
|
||
|
WM_KILLFOCUS, "KillFocus",
|
||
|
WM_ENABLE, "Enable",
|
||
|
WM_SETREDRAW, "SetRedraw",
|
||
|
WM_SETTEXT, "SetText",
|
||
|
WM_GETTEXT, "GetText",
|
||
|
WM_GETTEXTLENGTH, "GetTextLen",
|
||
|
WM_PAINT, "Paint",
|
||
|
WM_CLOSE, "Close",
|
||
|
WM_QUERYENDSESSION, "QueryEndSession",
|
||
|
WM_QUERYOPEN, "QueryOpen",
|
||
|
WM_ENDSESSION, "EndSession",
|
||
|
WM_QUIT, "Quit",
|
||
|
WM_ERASEBKGND, "EraseBackground",
|
||
|
WM_SYSCOLORCHANGE, "SysColorChange",
|
||
|
WM_SHOWWINDOW, "ShowWindow",
|
||
|
WM_WININICHANGE, "WinIniChange",
|
||
|
WM_SETTINGCHANGE, "SettingChange",
|
||
|
WM_DEVMODECHANGE, "DevModeChange",
|
||
|
WM_ACTIVATEAPP, "ActivateApp",
|
||
|
WM_FONTCHANGE, "FontChange",
|
||
|
WM_TIMECHANGE, "TimeChange",
|
||
|
WM_CANCELMODE, "CancelMode",
|
||
|
WM_SETCURSOR, "SetCursor",
|
||
|
WM_MOUSEACTIVATE, "MouseActivate",
|
||
|
WM_CHILDACTIVATE, "ChildActivate",
|
||
|
WM_QUEUESYNC, "QueueSync",
|
||
|
WM_GETMINMAXINFO, "GetMinMaxInfo",
|
||
|
WM_PAINTICON, "PaintIcon",
|
||
|
WM_ICONERASEBKGND, "IconEraseBackground",
|
||
|
WM_NEXTDLGCTL, "NextDialogControl",
|
||
|
WM_SPOOLERSTATUS, "SpoolerStatus",
|
||
|
WM_DRAWITEM, "DrawItem",
|
||
|
WM_MEASUREITEM, "MeasureItem",
|
||
|
WM_DELETEITEM, "DeleteItem",
|
||
|
WM_VKEYTOITEM, "VKeyToItem",
|
||
|
WM_CHARTOITEM, "CharToItem",
|
||
|
WM_SETFONT, "SetFont",
|
||
|
WM_GETFONT, "GetFont",
|
||
|
WM_SETHOTKEY, "SetHotKey",
|
||
|
WM_GETHOTKEY, "GetHotKey",
|
||
|
WM_QUERYDRAGICON, "QueryDragIcon",
|
||
|
WM_COMPAREITEM, "CompareItem",
|
||
|
WM_GETOBJECT, "GetObject",
|
||
|
WM_COMPACTING, "Compacting",
|
||
|
WM_COMMNOTIFY, "CommNotify",
|
||
|
WM_WINDOWPOSCHANGING, "WindowPosChanging",
|
||
|
WM_WINDOWPOSCHANGED, "WindowPosChanged",
|
||
|
WM_POWER, "Power",
|
||
|
WM_COPYDATA, "CopyData",
|
||
|
WM_CANCELJOURNAL, "CancelJournal",
|
||
|
WM_NOTIFY, "Notify",
|
||
|
WM_INPUTLANGCHANGEREQUEST, "InputLangChangeRequest",
|
||
|
WM_INPUTLANGCHANGE, "InputLangChange",
|
||
|
WM_TCARD, "TCard",
|
||
|
WM_HELP, "Help",
|
||
|
WM_USERCHANGED, "UserChanged",
|
||
|
WM_NOTIFYFORMAT, "NotifyFormat",
|
||
|
WM_CONTEXTMENU, "ContextMenu",
|
||
|
WM_STYLECHANGING, "StyleChanging",
|
||
|
WM_STYLECHANGED, "StyleChanged",
|
||
|
WM_DISPLAYCHANGE, "DisplayChange",
|
||
|
WM_GETICON, "GetIcon",
|
||
|
WM_SETICON, "SetIcon",
|
||
|
WM_NCCREATE, "NCCreate",
|
||
|
WM_NCDESTROY, "NCDestroy",
|
||
|
WM_NCCALCSIZE, "NCCalcSize",
|
||
|
WM_NCHITTEST, "NCHitTest",
|
||
|
WM_NCPAINT, "NCPaint",
|
||
|
WM_NCACTIVATE, "NCActivate",
|
||
|
WM_GETDLGCODE, "GetDialogCode",
|
||
|
WM_SYNCPAINT, "SyncPaint",
|
||
|
WM_NCMOUSEMOVE, "NCMouseMove",
|
||
|
WM_NCLBUTTONDOWN, "NCLeftButtonDown",
|
||
|
WM_NCLBUTTONUP, "NCLeftButtonUp",
|
||
|
WM_NCLBUTTONDBLCLK, "NCLeftButtonDoubleClick",
|
||
|
WM_NCRBUTTONDOWN, "NCRightButtonDown",
|
||
|
WM_NCRBUTTONUP, "NCRightButtonUp",
|
||
|
WM_NCRBUTTONDBLCLK, "NCRightButtonDoubleClick",
|
||
|
WM_NCMBUTTONDOWN, "NCMiddleButtonDown",
|
||
|
WM_NCMBUTTONUP, "NCMiddleButtonUp",
|
||
|
WM_NCMBUTTONDBLCLK, "NCMiddleButtonDoubleClick",
|
||
|
WM_NCXBUTTONDOWN, "NCXButtonDown",
|
||
|
WM_NCXBUTTONUP, "NCXButtonUp",
|
||
|
WM_NCXBUTTONDBLCLK, "NCXButtonDoubleClick",
|
||
|
WM_KEYFIRST, "KeyFirst",
|
||
|
WM_KEYDOWN, "KeyDown",
|
||
|
WM_KEYUP, "KeyUp",
|
||
|
WM_CHAR, "Char",
|
||
|
WM_DEADCHAR, "DeadChar",
|
||
|
WM_SYSKEYDOWN, "SysKeyDown",
|
||
|
WM_SYSKEYUP, "SysKeyUp",
|
||
|
WM_SYSCHAR, "SysChar",
|
||
|
WM_SYSDEADCHAR, "SysDeadChar",
|
||
|
WM_KEYLAST, "KeyLast",
|
||
|
WM_IME_STARTCOMPOSITION, "IMEStartComposition",
|
||
|
WM_IME_ENDCOMPOSITION, "IMEEndComposition",
|
||
|
WM_IME_COMPOSITION, "IMEComposition",
|
||
|
WM_IME_KEYLAST, "IMEKeyLast",
|
||
|
WM_INITDIALOG, "InitDialog",
|
||
|
WM_COMMAND, "Command",
|
||
|
WM_SYSCOMMAND, "SysCommand",
|
||
|
WM_TIMER, "Timer",
|
||
|
WM_HSCROLL, "HScroll",
|
||
|
WM_VSCROLL, "VScroll",
|
||
|
WM_INITMENU, "InitMenu",
|
||
|
WM_INITMENUPOPUP, "InitMenuPopup",
|
||
|
WM_MENUSELECT, "MenuSelect",
|
||
|
WM_MENUCHAR, "MenuChar",
|
||
|
WM_ENTERIDLE, "EnterIdle",
|
||
|
WM_MENURBUTTONUP, "MenuRightButtonUp",
|
||
|
WM_MENUDRAG, "MenuDrag",
|
||
|
WM_MENUGETOBJECT, "MenuGetObject",
|
||
|
WM_UNINITMENUPOPUP, "UninitMenuPopup",
|
||
|
WM_MENUCOMMAND, "MenuCommand",
|
||
|
WM_CHANGEUISTATE, "ChangeUIState",
|
||
|
WM_UPDATEUISTATE, "UpdateUIState",
|
||
|
WM_QUERYUISTATE, "QueryUIState",
|
||
|
WM_CTLCOLORMSGBOX, "CtlColorMsgBox",
|
||
|
WM_CTLCOLOREDIT, "CtlColorEdit",
|
||
|
WM_CTLCOLORLISTBOX, "CtlColorListBox",
|
||
|
WM_CTLCOLORBTN, "CtlColorButton",
|
||
|
WM_CTLCOLORDLG, "CtlColorDialog",
|
||
|
WM_CTLCOLORSCROLLBAR, "CtlColorScrollBar",
|
||
|
WM_CTLCOLORSTATIC, "CtlColorStatic",
|
||
|
WM_MOUSEFIRST, "MouseFirst",
|
||
|
WM_MOUSEMOVE, "MouseMove",
|
||
|
WM_LBUTTONDOWN, "LeftButtonDown",
|
||
|
WM_LBUTTONUP, "LeftButtonUp",
|
||
|
WM_LBUTTONDBLCLK, "LeftButtonDoubleClick",
|
||
|
WM_RBUTTONDOWN, "RightButtonDown",
|
||
|
WM_RBUTTONUP, "RightButtonUp",
|
||
|
WM_RBUTTONDBLCLK, "RightButtonDoubleClick",
|
||
|
WM_MBUTTONDOWN, "MiddleButtonDown",
|
||
|
WM_MBUTTONUP, "MiddleButtonUp",
|
||
|
WM_MBUTTONDBLCLK, "MiddleButtonDoubleClick",
|
||
|
WM_MOUSEWHEEL, "MouseWheel",
|
||
|
WM_XBUTTONDOWN, "XButtonDown",
|
||
|
WM_XBUTTONUP, "XButtonUp",
|
||
|
WM_XBUTTONDBLCLK, "XButtonDoubleClick",
|
||
|
WM_MOUSELAST, "MouseLast",
|
||
|
WM_PARENTNOTIFY, "ParentNotify",
|
||
|
WM_ENTERMENULOOP, "EnterMenuLoop",
|
||
|
WM_EXITMENULOOP, "ExitMenuLoop",
|
||
|
WM_NEXTMENU, "NextMenu",
|
||
|
WM_SIZING, "Sizing",
|
||
|
WM_CAPTURECHANGED, "CaptureChanged",
|
||
|
WM_MOVING, "Moving",
|
||
|
WM_POWERBROADCAST, "PowerBroadcast",
|
||
|
WM_DEVICECHANGE, "DeviceChange",
|
||
|
WM_MDICREATE, "MDICreate",
|
||
|
WM_MDIDESTROY, "MDIDestroy",
|
||
|
WM_MDIACTIVATE, "MDIActivate",
|
||
|
WM_MDIRESTORE, "MDIRestore",
|
||
|
WM_MDINEXT, "MDINext",
|
||
|
WM_MDIMAXIMIZE, "MDIMaximize",
|
||
|
WM_MDITILE, "MDITitle",
|
||
|
WM_MDICASCADE, "MDICascade",
|
||
|
WM_MDIICONARRANGE, "MDIIconArrange",
|
||
|
WM_MDIGETACTIVE, "MDIGetActive",
|
||
|
WM_MDISETMENU, "MDISetMenu",
|
||
|
WM_ENTERSIZEMOVE, "EnterSizeMove",
|
||
|
WM_EXITSIZEMOVE, "ExitSizeMove",
|
||
|
WM_DROPFILES, "DropFiles",
|
||
|
WM_MDIREFRESHMENU, "MDIRefreshMenu",
|
||
|
WM_IME_SETCONTEXT, "IMESetContext",
|
||
|
WM_IME_NOTIFY, "IMENotify",
|
||
|
WM_IME_CONTROL, "IMEControl",
|
||
|
WM_IME_COMPOSITIONFULL, "IMECompositionFull",
|
||
|
WM_IME_SELECT, "IMESelect",
|
||
|
WM_IME_CHAR, "IMEChar",
|
||
|
WM_IME_REQUEST, "IMERequest",
|
||
|
WM_IME_KEYDOWN, "IMEKeyDown",
|
||
|
WM_IME_KEYUP, "IMEKeyUp",
|
||
|
WM_MOUSEHOVER, "MouseHover",
|
||
|
WM_MOUSELEAVE, "MouseLeave",
|
||
|
WM_NCMOUSEHOVER, "NCMouseHover",
|
||
|
WM_NCMOUSELEAVE, "NCMouseLeave",
|
||
|
WM_CUT, "Cut",
|
||
|
WM_COPY, "Copy",
|
||
|
WM_PASTE, "Paste",
|
||
|
WM_CLEAR, "Clear",
|
||
|
WM_UNDO, "Undo",
|
||
|
WM_RENDERFORMAT, "RenderFormat",
|
||
|
WM_RENDERALLFORMATS, "RenderAllFormats",
|
||
|
WM_DESTROYCLIPBOARD, "DestroyClipboard",
|
||
|
WM_DRAWCLIPBOARD, "DrawClipboard",
|
||
|
WM_PAINTCLIPBOARD, "PaintClipboard",
|
||
|
WM_VSCROLLCLIPBOARD, "VScrollClipboard",
|
||
|
WM_SIZECLIPBOARD, "SizeClipboard",
|
||
|
WM_ASKCBFORMATNAME, "AskCBFormatName",
|
||
|
WM_CHANGECBCHAIN, "ChangeCBChain",
|
||
|
WM_HSCROLLCLIPBOARD, "HScrollClipboard",
|
||
|
WM_QUERYNEWPALETTE, "QueryNewPalette",
|
||
|
WM_PALETTEISCHANGING, "PaletteIsChanging",
|
||
|
WM_PALETTECHANGED, "PaletteChanged",
|
||
|
WM_HOTKEY, "HotKey",
|
||
|
WM_PRINT, "Print",
|
||
|
WM_PRINTCLIENT, "PrintClient",
|
||
|
WM_APPCOMMAND, "AppCommand",
|
||
|
WM_HANDHELDFIRST, "HandHeldFirst",
|
||
|
WM_HANDHELDLAST, "HandHeldLast",
|
||
|
WM_AFXFIRST, "AFXFirst",
|
||
|
WM_AFXLAST, "AFXLast",
|
||
|
WM_PENWINFIRST, "PenWinFirst",
|
||
|
WM_PENWINLAST, "PenWinLast",
|
||
|
WM_USER, "User",
|
||
|
WM_APP, "App",
|
||
|
0x00, NULL
|
||
|
};
|
||
|
NAMETABLE SrvReqNames[] =
|
||
|
{
|
||
|
SRVREQ_NONE, "None",
|
||
|
SRVREQ_BUSY, "Busy",
|
||
|
SRVREQ_GETCLIENTINFO, "GetClientInfo",
|
||
|
SRVREQ_SETCLIENTINFO, "SetClientInfo",
|
||
|
SRVREQ_TERMINATE, "Terminate",
|
||
|
0x00, NULL
|
||
|
};
|
||
|
|
||
|
/*++
|
||
|
@doc INTERNAL
|
||
|
|
||
|
@func VOID | TRDebugPrint | Print to system debugger.
|
||
|
|
||
|
@parm IN LPCSTR | format | Points to the format string.
|
||
|
@parm ... | Arguments.
|
||
|
|
||
|
@rvalue SUCCESS | returns the number of chars stored in the buffer not
|
||
|
counting the terminating null characters.
|
||
|
@rvalue FAILURE | returns less than the length of the expected output.
|
||
|
--*/
|
||
|
|
||
|
int
|
||
|
TRDebugPrint(
|
||
|
IN LPCSTR format,
|
||
|
...
|
||
|
)
|
||
|
{
|
||
|
int n;
|
||
|
static char szMessage[256] = {0};
|
||
|
va_list arglist;
|
||
|
|
||
|
va_start(arglist, format);
|
||
|
n = wvsprintfA(szMessage, format, arglist);
|
||
|
va_end(arglist);
|
||
|
OutputDebugStringA(szMessage);
|
||
|
|
||
|
return n;
|
||
|
} //TRDebugPrint
|
||
|
|
||
|
/*++
|
||
|
@doc INTERNAL
|
||
|
|
||
|
@func PSZ | LookupName |
|
||
|
Look up name string of a code in the given name table.
|
||
|
|
||
|
@parm IN ULONG | Code | The given code to lookup.
|
||
|
@parm IN PNAMETABLE | NameTable | The name table to look into.
|
||
|
|
||
|
@rvalue SUCCESS - Returns pointer to the minor function name string.
|
||
|
@rvalue FAILURE - Returns "unknown".
|
||
|
--*/
|
||
|
|
||
|
PSZ
|
||
|
LookupName(
|
||
|
IN ULONG Code,
|
||
|
IN PNAMETABLE NameTable
|
||
|
)
|
||
|
{
|
||
|
PSZ pszName = NULL;
|
||
|
static char szUnknown[64];
|
||
|
|
||
|
while (NameTable->pszName != NULL)
|
||
|
{
|
||
|
if (Code == NameTable->Code)
|
||
|
{
|
||
|
pszName = NameTable->pszName;
|
||
|
break;
|
||
|
}
|
||
|
NameTable++;
|
||
|
}
|
||
|
|
||
|
if (pszName == NULL)
|
||
|
{
|
||
|
wsprintfA(szUnknown, "unknown[0x%x(%d)]", Code, Code);
|
||
|
pszName = szUnknown;
|
||
|
}
|
||
|
|
||
|
return pszName;
|
||
|
} //LookupName
|
||
|
|
||
|
#endif //ifdef TRDEBUG
|