Release 950727
[wine] / include / toolhelp.h
1 #ifndef __TOOLHELP_H
2 #define __TOOLHELP_H
3
4 #include "windows.h"
5
6 #define MAX_DATA        11
7 #define MAX_MODULE_NAME 9
8 #define MAX_PATH        255
9 #define MAX_CLASSNAME   255
10
11 /* Global heap */
12
13 typedef struct
14 {
15     DWORD dwSize;
16     WORD  wcItems;
17     WORD  wcItemsFree;
18     WORD  wcItemsLRU;
19 } GLOBALINFO;
20
21 typedef struct
22 {
23     DWORD   dwSize;
24     DWORD   dwAddress;
25     DWORD   dwBlockSize;
26     HGLOBAL hBlock;
27     WORD    wcLock;
28     WORD    wcPageLock;
29     WORD    wFlags;
30     BOOL    wHeapPresent;
31     HGLOBAL hOwner;
32     WORD    wType;
33     WORD    wData;
34     DWORD   dwNext;
35     DWORD   dwNextAlt;
36 } GLOBALENTRY;
37
38   /* GlobalFirst()/GlobalNext() flags */
39 #define GLOBAL_ALL      0
40 #define GLOBAL_LRU      1
41 #define GLOBAL_FREE     2
42
43   /* wType values */
44 #define GT_UNKNOWN      0
45 #define GT_DGROUP       1
46 #define GT_DATA         2
47 #define GT_CODE         3
48 #define GT_TASK         4
49 #define GT_RESOURCE     5
50 #define GT_MODULE       6
51 #define GT_FREE         7
52 #define GT_INTERNAL     8
53 #define GT_SENTINEL     9
54 #define GT_BURGERMASTER 10
55
56 /* wData values */
57 #define GD_USERDEFINED      0
58 #define GD_CURSORCOMPONENT  1
59 #define GD_BITMAP           2
60 #define GD_ICONCOMPONENT    3
61 #define GD_MENU             4
62 #define GD_DIALOG           5
63 #define GD_STRING           6
64 #define GD_FONTDIR          7
65 #define GD_FONT             8
66 #define GD_ACCELERATORS     9
67 #define GD_RCDATA           10
68 #define GD_ERRTABLE         11
69 #define GD_CURSOR           12
70 #define GD_ICON             14
71 #define GD_NAMETABLE        15
72 #define GD_MAX_RESOURCE     15
73
74 /* wFlags values */
75 #define GF_PDB_OWNER        0x0100      /* Low byte is KERNEL flags */
76
77 BOOL GlobalInfo( GLOBALINFO *pInfo );
78 BOOL GlobalFirst( GLOBALENTRY *pGlobal, WORD wFlags );
79 BOOL GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags) ;
80 BOOL GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL hItem );
81 BOOL GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE hModule, WORD wSeg );
82 WORD GlobalHandleToSel( HGLOBAL handle );
83
84 /* Local heap */
85
86 typedef struct
87 {
88     DWORD   dwSize;
89     WORD    wcItems;
90 } LOCALINFO;
91
92 typedef struct
93 {
94     DWORD   dwSize;
95     HLOCAL  hHandle;
96     WORD    wAddress;
97     WORD    wSize;
98     WORD    wFlags;
99     WORD    wcLock;
100     WORD    wType;
101     WORD    hHeap;
102     WORD    wHeapType;
103     WORD    wNext;
104 } LOCALENTRY;
105
106 /* wHeapType values */
107 #define NORMAL_HEAP     0
108 #define USER_HEAP       1
109 #define GDI_HEAP        2
110
111 /* wFlags values */
112 #define LF_FIXED        1
113 #define LF_FREE         2
114 #define LF_MOVEABLE     4
115
116 /* wType values */
117 #define LT_NORMAL                   0
118 #define LT_FREE                     0xff
119 #define LT_GDI_PEN                  1   /* LT_GDI_* is for GDI's heap */
120 #define LT_GDI_BRUSH                2
121 #define LT_GDI_FONT                 3
122 #define LT_GDI_PALETTE              4
123 #define LT_GDI_BITMAP               5
124 #define LT_GDI_RGN                  6
125 #define LT_GDI_DC                   7
126 #define LT_GDI_DISABLED_DC          8
127 #define LT_GDI_METADC               9
128 #define LT_GDI_METAFILE             10
129 #define LT_GDI_MAX                  LT_GDI_METAFILE
130 #define LT_USER_CLASS               1   /* LT_USER_* is for USER's heap */
131 #define LT_USER_WND                 2
132 #define LT_USER_STRING              3
133 #define LT_USER_MENU                4
134 #define LT_USER_CLIP                5
135 #define LT_USER_CBOX                6
136 #define LT_USER_PALETTE             7
137 #define LT_USER_ED                  8
138 #define LT_USER_BWL                 9
139 #define LT_USER_OWNERDRAW           10
140 #define LT_USER_SPB                 11
141 #define LT_USER_CHECKPOINT          12
142 #define LT_USER_DCE                 13
143 #define LT_USER_MWP                 14
144 #define LT_USER_PROP                15
145 #define LT_USER_LBIV                16
146 #define LT_USER_MISC                17
147 #define LT_USER_ATOMS               18
148 #define LT_USER_LOCKINPUTSTATE      19
149 #define LT_USER_HOOKLIST            20
150 #define LT_USER_USERSEEUSERDOALLOC  21
151 #define LT_USER_HOTKEYLIST          22
152 #define LT_USER_POPUPMENU           23
153 #define LT_USER_HANDLETABLE         32
154 #define LT_USER_MAX                 LT_USER_HANDLETABLE
155
156 BOOL LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL handle );
157 BOOL LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL handle );
158 BOOL LocalNext( LOCALENTRY *pLocalEntry );
159
160
161 /* modules */
162
163 typedef struct {
164     DWORD dwSize;
165     char szModule[MAX_MODULE_NAME + 1];
166     HMODULE hModule;
167     WORD wcUsage;
168     char szExePath[MAX_PATH + 1];
169     WORD wNext;
170 } MODULEENTRY;
171 typedef MODULEENTRY *LPMODULEENTRY;
172
173 BOOL    ModuleFirst(MODULEENTRY *lpModule);
174 BOOL    ModuleNext(MODULEENTRY *lpModule);
175 HMODULE ModuleFindName(MODULEENTRY *lpModule, LPCSTR lpstrName);
176 HMODULE ModuleFindHandle(MODULEENTRY *lpModule, HMODULE hModule);
177
178 /* tasks */
179
180 typedef struct tagTASKENTRY {
181         DWORD dwSize;
182         HTASK hTask;
183         HTASK hTaskParent;
184         HINSTANCE hInst;
185         HMODULE hModule;
186         WORD wSS;
187         WORD wSP;
188         WORD wStackTop;
189         WORD wStackMinimum;
190         WORD wStackBottom;
191         WORD wcEvents;
192         HGLOBAL hQueue;
193         char szModule[MAX_MODULE_NAME + 1];
194         WORD wPSPOffset;
195         HANDLE hNext;
196 } TASKENTRY;
197 typedef TASKENTRY *LPTASKENTRY;
198
199 BOOL    TaskFirst(LPTASKENTRY lpTask);
200 BOOL    TaskNext(LPTASKENTRY lpTask);
201 BOOL    TaskFindHandle(LPTASKENTRY lpTask, HTASK hTask);
202 DWORD   TaskSetCSIP(HTASK hTask, WORD wCS, WORD wIP);
203 DWORD   TaskGetCSIP(HTASK hTask);
204 BOOL    TaskSwitch(HTASK hTask, DWORD dwNewCSIP);
205
206 /* mem info */
207
208 typedef struct tagMEMMANINFO {
209         DWORD dwSize;
210         DWORD dwLargestFreeBlock;
211         DWORD dwMaxPagesAvailable;
212         DWORD dwMaxPagesLockable;
213         DWORD dwTotalLinearSpace;
214         DWORD dwTotalUnlockedPages;
215         DWORD dwFreePages;
216         DWORD dwTotalPages;
217         DWORD dwFreeLinearSpace;
218         DWORD dwSwapFilePages;
219         WORD wPageSize;
220 } MEMMANINFO;
221 typedef MEMMANINFO *LPMEMMANINFO;
222
223 typedef struct
224 {
225     DWORD   dwSize;
226     WORD    wUserFreePercent;
227     WORD    wGDIFreePercent;
228     HGLOBAL hUserSegment;
229     HGLOBAL hGDISegment;
230 } SYSHEAPINFO;
231
232 BOOL MemManInfo(LPMEMMANINFO lpEnhMode);
233 BOOL SystemHeapInfo( SYSHEAPINFO *pHeapInfo );
234
235
236 /* Window classes */
237
238 typedef struct
239 {
240     DWORD     dwSize;
241     HMODULE   hInst;              /* This is really an hModule */
242     char      szClassName[MAX_CLASSNAME + 1];
243     WORD      wNext;
244 } CLASSENTRY;
245
246 BOOL ClassFirst( CLASSENTRY *pClassEntry );
247 BOOL ClassNext( CLASSENTRY *pClassEntry );
248
249
250 /* Memory read/write */
251
252 DWORD MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count );
253 DWORD MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count );
254
255
256 #endif /* __TOOLHELP_H */