home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / sdktools / winnt / walker / pwalk.h < prev    next >
C/C++ Source or Header  |  1993-06-27  |  8KB  |  274 lines

  1. #include <windows.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include "pefile.h"
  5.  
  6.  
  7. #define IDR_MAINICON             20
  8. #define IDR_SYSSTATICON          21
  9. #define IDR_PROSTATICON          22
  10. #define IDR_WALKERMENU             30
  11.  
  12. #define IDS_WALKERCLASS          11000
  13. #define IDS_SYSSTATCLASS         11001
  14. #define IDS_PROSTATCLASS         11002
  15. #define IDS_STATUSCLASS          11004
  16. #define IDS_MEMVIEWCLASS         11005
  17. #define IDS_SYSSTATTITLE         11010
  18. #define IDS_PROSTATTITLE         11011
  19. #define IDS_MEMVIEWTITLE         11013
  20. #define IDS_CAPTION             11020
  21. #define IDS_UNAVAILABLE          11021
  22. #define IDS_LISTBOX             11022
  23. #define IDS_EXEFILEEXT             11023
  24. #define IDS_FILEOPENTITLE         11024
  25. #define IDS_SELF             11025
  26. #define IDS_ERROR             11030
  27. #define IDS_NOTENOUGHMEM         11031
  28. #define IDS_HEAPCREATEFAILED         11032
  29. #define IDS_DBGEVNTACTIVE         11042
  30. #define IDS_DBGEVNTCLOSE         11043
  31. #define IDS_DBGEVNTSTOP          11044
  32. #define IDS_DBGEVNTSTART         11045
  33. #define IDS_DBGEVNTREAD          11046
  34. #define IDS_DBGEVNTWRITE         11047
  35. #define IDS_DBGEVNTACK             11048
  36. #define IDS_EXCEPTION             11050
  37. #define IDS_APPEXCEPTION         11051
  38. #define IDS_CHILDAPPEXCEPTION         11052
  39. #define IDS_ERRDUPLICATEHANDLE         11060
  40. #define IDS_ERRGETTHREADCONTEXT      11061
  41. #define IDS_ERRCREATEPROCESS         11062
  42. #define IDS_ERROPENPROCESS         11063
  43. #define IDS_ERRCREATEFILEMAPPING     11064
  44. #define IDS_ERRHEAPALLOC         11065
  45. #define IDS_ERRREADPROCESSMEMORY     11066
  46. #define IDS_ERRCREATEWINDOW         11067
  47. #define IDS_ERRVIRTUALFREE         11068
  48. #define IDS_ERRVIRTUALALLOC         11069
  49. #define IDS_STATUSREADY          11070
  50. #define IDS_NOTCOMMITTEDMEMORY         11071
  51. #define IDS_ERRWRITEPROCESSMEMORY    11072
  52. #define IDS_COULDNOTREADPROCESS      11073
  53. #define IDS_ERRSETTHREADCONTEXT      11074
  54. #define IDS_EXITPROCESS          12000
  55. #define IDS_EXITTHREAD             12001
  56. #define IDS_CREATEPROCESS         12002
  57. #define IDS_CREATETHREAD         12003
  58. #define IDS_LOADDLL             12004
  59. #define IDS_UNLOADDLL             12005
  60. #define IDS_OUTPUTDEBUGSTRING         12006
  61. #define IDS_RIPEVENT             12007
  62. #define IDS_BREAKPOINTEXCEPTION      12008
  63. #define IDS_ACCESSVIOLATIONEXCEPTION 12009
  64. #define IDS_UNHANDLEDEXCEPTION         12010
  65. #define IDS_PROCESSSUSPENDED         12011
  66. #define IDS_PROCESSRESUMED         12012
  67. #define IDS_PROCESSINIT          12013
  68. #define IDS_MAPFILENAME          12014
  69. #define IDS_INITPROCESSFAILURE         12015
  70. #define IDS_INITPROBE             12016
  71. #define IDS_HOOKPROCESS          12017
  72.  
  73. #define IDC_LISTBOX             100
  74. #define IDC_STATUSWND             101
  75. #define IDC_REFRESH             200
  76. #define IDC_CANCEL             201
  77. #define IDC_REWALK             202
  78.  
  79. #define IDM_POPUPMENUS             1000
  80. #define IDM_POPUPPROCESS         1000
  81. #define IDM_POPUPSORT             1001
  82. #define IDM_POPUPVIEW             1002
  83. #define IDM_POPUPOPTIONS         1003
  84. #define MENUPOPUPS             4
  85.  
  86. #define IDM_PROCESSREWALK         2000
  87. #define IDM_PROCESSLOAD          2001
  88. #define IDM_PROCESSUNLOAD         2002
  89. #define IDM_PROCESSSUSPEND         2003
  90. #define IDM_PROCESSRESUME         2004
  91. #define IDM_EXIT             2010
  92. #define IDM_SORTADDRESS          2020
  93. #define IDM_SORTSTATE             2021
  94. #define IDM_SORTPROTECTION         2022
  95. #define IDM_SORTSIZE             2023
  96. #define IDM_SORTBASEADDRESS         2024
  97. #define IDM_VIEWSYSSTAT          2030
  98. #define IDM_VIEWPROSTAT          2031
  99. #define IDM_VIEWMEMORY             2033
  100. #define IDM_VIEWADDRESS          2034
  101. #define IDM_OPTBYTES                 2040
  102. #define IDM_OPTPAGES                 2041
  103.  
  104. #define IDD_ADDR             3000
  105. #define IDC_ADDR             3001
  106. #define IDC_HEX              3002
  107.  
  108. #define IDD_INITIALIZING         4000
  109. #define UM_ENDDIALOG             WM_USER+2
  110.  
  111. #define TOTALVMRESERVE             0x00100000
  112. #define PAGESIZE             0x1000
  113. #define IDM_REMOVEVIEWWND         WM_USER+0
  114.  
  115. #define IDT_STATUS             3000
  116. #define UM_UPDATE             WM_USER+1
  117. #define UM_STARTINITDIALOG         WM_USER+3
  118.  
  119. #define STATUSWXB             12
  120. #define WXB_HPENHILITE             0
  121. #define WXB_HPENSHADOW             4
  122. #define WXB_LPWINDOWTEXT         8
  123.  
  124. #define VIEWWXB              8
  125. #define WXB_LPMEMVIEW             0
  126. #define WXB_LPOLDMEMVIEW         4
  127.  
  128. /* define event handle array indeces */
  129. #define CLOSEDEBUGGER             0
  130. #define SUSPENDDEBUGGER          1
  131. #define RESUMEDEBUGGER             2
  132. #define READMEMORY             3
  133. #define WRITEMEMORY             4
  134. #define DEBUGACTIVE             5
  135. #define ACKNOWLEDGE             6
  136. #define nDEBUGEVENTS             7
  137.  
  138.  
  139. typedef struct DBGTHREAD    *LPDBGTHREAD;
  140. typedef struct tagDbgThread
  141.     {
  142.     HANDLE              hThread;
  143.     DWORD              dwThreadID;
  144.     LPTHREAD_START_ROUTINE    lpStartAddress;
  145.     int               nPriority;
  146.     LPDBGTHREAD           Next;
  147.     }DBGTHREAD;
  148.  
  149. typedef struct DBGDLL     *LPDBGDLL;
  150. typedef struct tagDbgDll
  151.     {
  152.     HANDLE      hFile;
  153.     LPVOID      lpBaseOfDll;
  154.     DWORD      dwDebugInfoFileOffset;
  155.     DWORD      nDebugInfoSize;
  156.     char      szImageName[MAX_PATH];
  157.     WORD      fUnicode;
  158.     LPDBGDLL      Next;
  159.     SECTIONINFO   *lpSection;  /* from PEFILE.H */
  160.     }DBGDLL;
  161.  
  162. typedef struct DBGEXCEPTREC    *LPDBGEXCEPTREC;
  163. typedef struct tagDbgExcept
  164.     {
  165.     EXCEPTION_RECORD    ExceptRecord;
  166.     CONTEXT        Context;
  167.     DWORD        dwThreadId;
  168.     DWORD        dwFirstChance;
  169.     LPDBGEXCEPTREC    Next;
  170.     }DBGEXCEPTREC;
  171.  
  172. typedef struct tagDbgProcess
  173.     {
  174.     HANDLE     hDbgHeap;
  175.     DWORD     dwProcessID;
  176.     HANDLE     hProcess;
  177.     HANDLE     hFile;
  178.     LPVOID     lpImage;
  179.     DWORD     dwDbgInfoOffset;
  180.     DWORD     nDbgInfoSize;
  181.     DBGTHREAD     *lpThreads;
  182.     DBGDLL     *lpDlls;
  183.     SECTIONINFO  *lpSection;
  184.     HWND     hWnd;
  185.     DWORD     dwPriority;
  186.     BOOL     bActive;
  187.     char     szModule[MAX_PATH];
  188.     DBGEXCEPTREC *lpERs;
  189.     }DBGPROCESS;
  190.  
  191. typedef struct tagVMObject
  192.     {
  193.     MEMORY_BASIC_INFORMATION    mbi;
  194.     char            szObjType[12];
  195.     char            szModule[MAX_PATH];
  196.     char            szSection[IMAGE_SIZEOF_SHORT_NAME];
  197.     BOOL            bNew;
  198.     }VMOBJECT, * LPVMOBJECT;
  199.  
  200.  
  201. /* struct for memory view window */
  202. typedef struct tagMemView
  203.     {
  204.     LPVOID    lpMem;
  205.     int       nBase;
  206.     int       nSize;
  207.     int       xWin, yWin;
  208.     int       PosV, RangeV;
  209.     long      nLines;
  210.     int       nExtraBytes;
  211. } MEMVIEW, * LPMEMVIEW;
  212.  
  213.  
  214. /* struct for process probe dll */
  215. typedef struct tagProbe
  216.     {
  217.     HANDLE     hProcess;
  218.     HANDLE     hDefHeap;
  219.     }PROBE, * LPPROBE;
  220.  
  221.  
  222. /* struct representing process state */
  223. typedef struct tagProcessState
  224.     {
  225.     CONTEXT    Context;
  226.     LPVOID     Esp;
  227.     LPVOID     pStackPage;
  228.     BYTE       Stack[PAGESIZE];
  229.     LPVOID     Eip;
  230.     LPVOID     pCodePage;
  231.     BYTE       Code[PAGESIZE];
  232.     }PROCESS_STATE, * LPPROCESS_STATE;
  233.  
  234.  
  235. /* prototypes for functions in pwalk.c */
  236. LONG   WINAPI WalkerWndProc (HWND, UINT, WPARAM, LPARAM);
  237. int    WINAPI NotifyUser (HWND, int, int, char *, UINT);
  238. void   WINAPI ReportError (int);
  239. BOOL   WINAPI GetFreeDiskSpace (LPDWORD, LPDWORD);
  240. BOOL   WINAPI InitDlgProc (HWND, UINT, WPARAM, LPARAM);
  241.  
  242. /* prototypes for functions in pwalkio.c */
  243. BOOL   WINAPI GetFileName (HWND, char *, char *);
  244. void   WINAPI GetFileFromPath (char *, char *);
  245. BOOL   WINAPI GetCmdLine (char *, char *, BOOL *);
  246. BOOL   WINAPI IsValidFile (char *);
  247.  
  248. /* prototypes for functions in pstat.c */
  249. LONG   WINAPI SysStatWndProc (HWND, UINT, WPARAM, LPARAM);
  250. LONG   WINAPI ProStatWndProc (HWND, UINT, WPARAM, LPARAM);
  251. LONG   WINAPI StatusWndProc (HWND, UINT, WPARAM, LPARAM);
  252. void   WINAPI SetStatusText (HWND, int, COLORREF);
  253.  
  254. /* prototypes for functions in pview.c */
  255. HWND   WINAPI ViewMemory (HWND, char *, LPVOID, int, int);
  256. LONG   WINAPI MemWndProc (HWND, UINT, WPARAM, LPARAM);
  257. void   WINAPI ActivateViewWindow (ATOM);
  258. HWND   WINAPI EnumViewWindows (HWND, HWND);
  259. BOOL   WINAPI AddrDlgProc (HWND, UINT, WPARAM, LPARAM);
  260.  
  261. /* prototypes for functions in pdebug.c */
  262. DBGPROCESS* WINAPI StartChildProcess (HWND, char *, LPHANDLE);
  263. void   WINAPI CloseChildProcess (DBGPROCESS *, LPHANDLE);
  264. int    WINAPI WhereIsStack (HANDLE);
  265. int    WINAPI WalkProcess (HANDLE, LPVOID *, LPINT *);
  266. void   WINAPI AnalyzeProcess (DBGPROCESS *, LPVMOBJECT, int);
  267. void   WINAPI IdentifyNewObjects (LPVMOBJECT, int, LPVMOBJECT, int);
  268. BOOL   WINAPI CommittedMemoryRange (int, int, LPVMOBJECT, int *);
  269. BOOL   WINAPI AccessProcessMemory (HANDLE, HANDLE, LPVOID, LPVOID, DWORD *);
  270.  
  271. /* prototypes for functions in probe.c, a DLL */
  272. void    WINAPI ResetProbe ();
  273. LPPROBE WINAPI RetrieveProbeData ();
  274.