Release 950319
[wine/hacks.git] / include / toolhelp.h
blob85ab7b30e974d624669bdff6f2459ec4cdaddc45
1 #ifndef __TOOLHELP_H
2 #define __TOOLHELP_H
4 #include "windows.h"
6 #define MAX_DATA 11
7 #define MAX_MODULE_NAME 9
8 #define MAX_PATH 255
9 #define MAX_CLASSNAME 255
11 /* Global heap */
13 WORD GlobalHandleToSel( HANDLE handle );
16 /* Local heap */
18 typedef struct
20 DWORD dwSize;
21 WORD wcItems;
22 } LOCALINFO;
24 typedef struct
26 DWORD dwSize;
27 HLOCAL hHandle;
28 WORD wAddress;
29 WORD wSize;
30 WORD wFlags;
31 WORD wcLock;
32 WORD wType;
33 WORD hHeap;
34 WORD wHeapType;
35 WORD wNext;
36 } LOCALENTRY;
38 /* wHeapType values */
39 #define NORMAL_HEAP 0
40 #define USER_HEAP 1
41 #define GDI_HEAP 2
43 /* wFlags values */
44 #define LF_FIXED 1
45 #define LF_FREE 2
46 #define LF_MOVEABLE 4
48 /* wType values */
49 #define LT_NORMAL 0
50 #define LT_FREE 0xff
51 #define LT_GDI_PEN 1 /* LT_GDI_* is for GDI's heap */
52 #define LT_GDI_BRUSH 2
53 #define LT_GDI_FONT 3
54 #define LT_GDI_PALETTE 4
55 #define LT_GDI_BITMAP 5
56 #define LT_GDI_RGN 6
57 #define LT_GDI_DC 7
58 #define LT_GDI_DISABLED_DC 8
59 #define LT_GDI_METADC 9
60 #define LT_GDI_METAFILE 10
61 #define LT_GDI_MAX LT_GDI_METAFILE
62 #define LT_USER_CLASS 1 /* LT_USER_* is for USER's heap */
63 #define LT_USER_WND 2
64 #define LT_USER_STRING 3
65 #define LT_USER_MENU 4
66 #define LT_USER_CLIP 5
67 #define LT_USER_CBOX 6
68 #define LT_USER_PALETTE 7
69 #define LT_USER_ED 8
70 #define LT_USER_BWL 9
71 #define LT_USER_OWNERDRAW 10
72 #define LT_USER_SPB 11
73 #define LT_USER_CHECKPOINT 12
74 #define LT_USER_DCE 13
75 #define LT_USER_MWP 14
76 #define LT_USER_PROP 15
77 #define LT_USER_LBIV 16
78 #define LT_USER_MISC 17
79 #define LT_USER_ATOMS 18
80 #define LT_USER_LOCKINPUTSTATE 19
81 #define LT_USER_HOOKLIST 20
82 #define LT_USER_USERSEEUSERDOALLOC 21
83 #define LT_USER_HOTKEYLIST 22
84 #define LT_USER_POPUPMENU 23
85 #define LT_USER_HANDLETABLE 32
86 #define LT_USER_MAX LT_USER_HANDLETABLE
88 BOOL LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL handle );
89 BOOL LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL handle );
90 BOOL LocalNext( LOCALENTRY *pLocalEntry );
93 /* modules */
95 typedef struct {
96 DWORD dwSize;
97 char szModule[MAX_MODULE_NAME + 1];
98 HMODULE hModule;
99 WORD wcUsage;
100 char szExePath[MAX_PATH + 1];
101 WORD wNext;
102 } MODULEENTRY;
103 typedef MODULEENTRY *LPMODULEENTRY;
105 BOOL ModuleFirst(MODULEENTRY *lpModule);
106 BOOL ModuleNext(MODULEENTRY *lpModule);
107 HMODULE ModuleFindName(MODULEENTRY *lpModule, LPCSTR lpstrName);
108 HMODULE ModuleFindHandle(MODULEENTRY *lpModule, HMODULE hModule);
110 /* tasks */
112 typedef struct tagTASKENTRY {
113 DWORD dwSize;
114 HTASK hTask;
115 HTASK hTaskParent;
116 HINSTANCE hInst;
117 HMODULE hModule;
118 WORD wSS;
119 WORD wSP;
120 WORD wStackTop;
121 WORD wStackMinimum;
122 WORD wStackBottom;
123 WORD wcEvents;
124 HGLOBAL hQueue;
125 char szModule[MAX_MODULE_NAME + 1];
126 WORD wPSPOffset;
127 HANDLE hNext;
128 } TASKENTRY;
129 typedef TASKENTRY *LPTASKENTRY;
131 BOOL TaskFirst(LPTASKENTRY lpTask);
132 BOOL TaskNext(LPTASKENTRY lpTask);
133 BOOL TaskFindHandle(LPTASKENTRY lpTask, HTASK hTask);
134 DWORD TaskSetCSIP(HTASK hTask, WORD wCS, WORD wIP);
135 DWORD TaskGetCSIP(HTASK hTask);
136 BOOL TaskSwitch(HTASK hTask, DWORD dwNewCSIP);
138 /* mem info */
140 typedef struct tagMEMMANINFO {
141 DWORD dwSize;
142 DWORD dwLargestFreeBlock;
143 DWORD dwMaxPagesAvailable;
144 DWORD dwMaxPagesLockable;
145 DWORD dwTotalLinearSpace;
146 DWORD dwTotalUnlockedPages;
147 DWORD dwFreePages;
148 DWORD dwTotalPages;
149 DWORD dwFreeLinearSpace;
150 DWORD dwSwapFilePages;
151 WORD wPageSize;
152 } MEMMANINFO;
153 typedef MEMMANINFO *LPMEMMANINFO;
155 typedef struct
157 DWORD dwSize;
158 WORD wUserFreePercent;
159 WORD wGDIFreePercent;
160 HGLOBAL hUserSegment;
161 HGLOBAL hGDISegment;
162 } SYSHEAPINFO;
164 BOOL MemManInfo(LPMEMMANINFO lpEnhMode);
165 BOOL SystemHeapInfo( SYSHEAPINFO *pHeapInfo );
168 /* Window classes */
170 typedef struct
172 DWORD dwSize;
173 HMODULE hInst; /* This is really an hModule */
174 char szClassName[MAX_CLASSNAME + 1];
175 WORD wNext;
176 } CLASSENTRY;
178 BOOL ClassFirst( CLASSENTRY *pClassEntry );
179 BOOL ClassNext( CLASSENTRY *pClassEntry );
182 /* Memory read/write */
184 DWORD MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count );
185 DWORD MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count );
188 #endif /* __TOOLHELP_H */