Annotation of q_a/samples/ntsd/debug.c, revision 1.1

1.1     ! root        1: /******************************Module*Header*******************************\
        !             2: * Module Name: debug.c
        !             3: *
        !             4: * Debugger extension for dumping the INFO structure in NTSD
        !             5: *
        !             6: * Created: 24-Feb-1992 20:47:03
        !             7: * Author: Petrus Wong
        !             8: *
        !             9: * Copyright (c) 1990 Microsoft Corporation
        !            10: *
        !            11: * 1. Place the DLL in the correct path
        !            12: * 2. Run NTSD -d mdi
        !            13: * 3. Upon NTSD prompt, do
        !            14: *       !debug.dinfo address
        !            15: *       where address is the address of Info
        !            16: *
        !            17: * Dependencies:
        !            18: *
        !            19: *   (#defines)
        !            20: *   (#includes)
        !            21: *
        !            22: \**************************************************************************/
        !            23: #include <stddef.h>
        !            24: #include <windows.h>
        !            25: #include <winerror.h>
        !            26: #include <excpt.h>
        !            27: #include <stdarg.h>
        !            28: #include <stdio.h>
        !            29: #include <ntsdexts.h>
        !            30: #include "mditypes.h"
        !            31: 
        !            32: #define move(dst, src)\
        !            33: try {\
        !            34:     ReadProcessMemory(hCurrentProcess, (LPVOID)(src), &(dst), sizeof(dst), NULL);\
        !            35: } except (EXCEPTION_EXECUTE_HANDLER) {\
        !            36:     return;\
        !            37: }
        !            38: 
        !            39: /******************************Public*Routine******************************\
        !            40: *
        !            41: * LibMain
        !            42: *
        !            43: * Effects:   LibMain is called by Windows when
        !            44: *            the DLL is initialized, Thread Attached, and other times.
        !            45: *
        !            46: * Warnings:  The LibMain function should perform additional initialization
        !            47: *            tasks required by the DLL.  In this example, no initialization
        !            48: *            tasks are required.  LibMain should return a value of 1 if
        !            49: *            the initialization is successful.
        !            50: *
        !            51: * History:
        !            52: *  24-Feb-1992 -by- Petrus Wong
        !            53: * Wrote it.
        !            54: \**************************************************************************/
        !            55: 
        !            56: INT  APIENTRY LibMain(HANDLE hInst, DWORD ul_reason_being_called, LPVOID lpReserved)
        !            57: {
        !            58:     return 1;
        !            59:        UNREFERENCED_PARAMETER(hInst);
        !            60:        UNREFERENCED_PARAMETER(ul_reason_being_called);
        !            61:        UNREFERENCED_PARAMETER(lpReserved);
        !            62: }
        !            63: 
        !            64: 
        !            65: /******************************Public*Routine******************************\
        !            66: * dinfo
        !            67: *
        !            68: *
        !            69: * Effects: Debugger extension to dump the INFO structure
        !            70: *
        !            71: * To invoke the routine in NTSD, do the following:
        !            72: *
        !            73: *   1. place the debug.dll in the path
        !            74: *   2. on NTSD prompt, type
        !            75: *
        !            76: *      !debug.dinfo <address of the INFO structure>
        !            77: *
        !            78: * Warnings:
        !            79: *
        !            80: * History:
        !            81: *  24-Feb-1992 -by- Petrus Wong
        !            82: * Wrote it.
        !            83: \**************************************************************************/
        !            84: 
        !            85: void dinfo (
        !            86:     HANDLE hCurrentProcess,
        !            87:     HANDLE hCurrentThread,
        !            88:     HANDLE dwCurrentPc,
        !            89:     PNTSD_EXTENSION_APIS lpExtensionApis,
        !            90:     LPSTR lpArgumentString)
        !            91: {
        !            92:     PNTSD_OUTPUT_ROUTINE Print;
        !            93:     PNTSD_GET_EXPRESSION EvalExpression;
        !            94:     PNTSD_GET_SYMBOL GetSymbol;
        !            95: 
        !            96:     PINFO   pInfo;
        !            97:     INFO    info;
        !            98: 
        !            99:     Print = lpExtensionApis->lpOutputRoutine;
        !           100:     EvalExpression = lpExtensionApis->lpGetExpressionRoutine;
        !           101:     GetSymbol = lpExtensionApis->lpGetSymbolRoutine;
        !           102: 
        !           103:     while (*lpArgumentString == ' ')
        !           104:         lpArgumentString++;
        !           105: 
        !           106:     pInfo = (PINFO)EvalExpression(lpArgumentString);
        !           107:     move(info, pInfo);
        !           108:     Print(info.CaptionBarText);
        !           109:     Print("\n");
        !           110:     Print("hParent             = %x\n", info.hParent         );
        !           111:     Print("hTextWnd            = %x\n", info.hTextWnd        );
        !           112:     Print("rcClient(l,t,r,b)   = (%d,%d,%d,%d)\n",
        !           113:                                  info.rcClient.left,  info.rcClient.top,
        !           114:                                  info.rcClient.right, info.rcClient.bottom );
        !           115:     return;
        !           116: }
        !           117: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.