Annotation of mstools/samples/sdktools/walker/pwalk.h, revision 1.1

1.1     ! root        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 ();

unix.superglobalmegacorp.com

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