2 * Copyright (C) the Wine project
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #ifndef __WINE_WINE_WINBASE16_H
20 #define __WINE_WINE_WINBASE16_H
25 #include "wine/windef16.h"
26 #include "wine/library.h"
29 typedef struct _SEGINFO {
41 #define WF_PMODE 0x0001
42 #define WF_CPU286 0x0002
43 #define WF_CPU386 0x0004
44 #define WF_CPU486 0x0008
45 #define WF_STANDARD 0x0010
46 #define WF_WIN286 0x0010
47 #define WF_ENHANCED 0x0020
48 #define WF_WIN386 0x0020
49 #define WF_CPU086 0x0040
50 #define WF_CPU186 0x0080
51 #define WF_LARGEFRAME 0x0100
52 #define WF_SMALLFRAME 0x0200
53 #define WF_80x87 0x0400
54 #define WF_PAGING 0x0800
55 #define WF_HASCPUID 0x2000
56 #define WF_WIN32WOW 0x4000 /* undoc */
59 /* Parameters for LoadModule() */
62 HGLOBAL16 hEnvironment; /* Environment segment */
63 SEGPTR cmdLine WINE_PACKED; /* Command-line */
64 SEGPTR showCmd WINE_PACKED; /* Code for ShowWindow() */
65 SEGPTR reserved WINE_PACKED;
68 /* Debugging support (DEBUG SYSTEM ONLY) */
72 DWORD dwOptions WINE_PACKED;
73 DWORD dwFilter WINE_PACKED;
74 CHAR achAllocModule[8] WINE_PACKED;
75 DWORD dwAllocBreak WINE_PACKED;
76 DWORD dwAllocCount WINE_PACKED;
77 } WINDEBUGINFO16, *LPWINDEBUGINFO16;
81 #define INVALID_HANDLE_VALUE16 ((HANDLE16) -1)
82 #define INFINITE16 0xFFFF
85 DWORD dwOSVersionInfoSize;
90 CHAR szCSDVersion[128];
95 * NE Header FORMAT FLAGS
97 #define NE_FFLAGS_SINGLEDATA 0x0001
98 #define NE_FFLAGS_MULTIPLEDATA 0x0002
99 #define NE_FFLAGS_WIN32 0x0010
100 #define NE_FFLAGS_BUILTIN 0x0020 /* Wine built-in module */
101 #define NE_FFLAGS_FRAMEBUF 0x0100 /* OS/2 fullscreen app */
102 #define NE_FFLAGS_CONSOLE 0x0200 /* OS/2 console app */
103 #define NE_FFLAGS_GUI 0x0300 /* right, (NE_FFLAGS_FRAMEBUF | NE_FFLAGS_CONSOLE) */
104 #define NE_FFLAGS_SELFLOAD 0x0800
105 #define NE_FFLAGS_LINKERROR 0x2000
106 #define NE_FFLAGS_CALLWEP 0x4000
107 #define NE_FFLAGS_LIBMODULE 0x8000
110 * NE Header OPERATING SYSTEM
112 #define NE_OSFLAGS_UNKNOWN 0x01
113 #define NE_OSFLAGS_WINDOWS 0x04
116 * NE Header ADDITIONAL FLAGS
118 #define NE_AFLAGS_WIN2_PROTMODE 0x02
119 #define NE_AFLAGS_WIN2_PROFONTS 0x04
120 #define NE_AFLAGS_FASTLOAD 0x08
125 #define NE_SEGFLAGS_DATA 0x0001
126 #define NE_SEGFLAGS_ALLOCATED 0x0002
127 #define NE_SEGFLAGS_LOADED 0x0004
128 #define NE_SEGFLAGS_ITERATED 0x0008
129 #define NE_SEGFLAGS_MOVEABLE 0x0010
130 #define NE_SEGFLAGS_SHAREABLE 0x0020
131 #define NE_SEGFLAGS_PRELOAD 0x0040
132 #define NE_SEGFLAGS_EXECUTEONLY 0x0080
133 #define NE_SEGFLAGS_READONLY 0x0080
134 #define NE_SEGFLAGS_RELOC_DATA 0x0100
135 #define NE_SEGFLAGS_SELFLOAD 0x0800
136 #define NE_SEGFLAGS_DISCARDABLE 0x1000
137 #define NE_SEGFLAGS_32BIT 0x2000
140 * Resource table structures.
154 WORD type_id; /* Type identifier */
155 WORD count; /* Number of resources of this type */
156 FARPROC16 resloader; /* SetResourceHandler() */
162 #define NE_RSCTYPE_CURSOR 0x8001
163 #define NE_RSCTYPE_BITMAP 0x8002
164 #define NE_RSCTYPE_ICON 0x8003
165 #define NE_RSCTYPE_MENU 0x8004
166 #define NE_RSCTYPE_DIALOG 0x8005
167 #define NE_RSCTYPE_STRING 0x8006
168 #define NE_RSCTYPE_FONTDIR 0x8007
169 #define NE_RSCTYPE_FONT 0x8008
170 #define NE_RSCTYPE_ACCELERATOR 0x8009
171 #define NE_RSCTYPE_RCDATA 0x800a
172 #define NE_RSCTYPE_GROUP_CURSOR 0x800c
173 #define NE_RSCTYPE_GROUP_ICON 0x800e
176 #define __AHSHIFT 3 /* don't change! */
177 #define __AHINCR (1 << __AHSHIFT)
179 /* undocumented functions */
180 WORD WINAPI AllocCStoDSAlias16(WORD);
181 WORD WINAPI AllocDStoCSAlias16(WORD);
182 HGLOBAL16 WINAPI AllocResource16(HINSTANCE16,HRSRC16,DWORD);
183 WORD WINAPI AllocSelector16(WORD);
184 WORD WINAPI AllocSelectorArray16(WORD);
185 VOID WINAPI DirectedYield16(HTASK16);
186 HGLOBAL16 WINAPI DirectResAlloc16(HINSTANCE16,WORD,UINT16);
187 HANDLE16 WINAPI FarGetOwner16(HGLOBAL16);
188 VOID WINAPI FarSetOwner16(HGLOBAL16,HANDLE16);
189 FARPROC16 WINAPI FileCDR16(FARPROC16);
190 WORD WINAPI FreeSelector16(WORD);
191 HANDLE16 WINAPI GetAtomHandle16(ATOM);
192 HANDLE16 WINAPI GetCodeHandle16(FARPROC16);
193 BOOL16 WINAPI GetCodeInfo16(FARPROC16,SEGINFO*);
194 DWORD WINAPI GetCurrentPDB16(void);
195 HTASK16 WINAPI GetCurrentTask(void);
196 SEGPTR WINAPI GetDOSEnvironment16(void);
197 HMODULE16 WINAPI GetExePtr(HANDLE16);
198 WORD WINAPI GetExeVersion16(void);
199 WORD WINAPI GetExpWinVer16(HMODULE16);
200 HQUEUE16 WINAPI GetFastQueue16(void);
201 DWORD WINAPI GetHeapSpaces16(HMODULE16);
202 INT16 WINAPI GetInstanceData16(HINSTANCE16,WORD,INT16);
203 BOOL16 WINAPI GetModuleName16(HINSTANCE16,LPSTR,INT16);
204 INT16 WINAPI GetModuleUsage16(HINSTANCE16);
205 UINT16 WINAPI GetNumTasks16(void);
206 SEGPTR WINAPI GetpWin16Lock16(void);
207 DWORD WINAPI GetSelectorLimit16(WORD);
208 FARPROC16 WINAPI GetSetKernelDOSProc16(FARPROC16 DosProc);
209 HINSTANCE16 WINAPI GetTaskDS16(void);
210 HQUEUE16 WINAPI GetTaskQueue16(HTASK16);
211 HQUEUE16 WINAPI GetThreadQueue16(DWORD);
212 DWORD WINAPI GetWinFlags16(void);
213 DWORD WINAPI GlobalDOSAlloc16(DWORD);
214 WORD WINAPI GlobalDOSFree16(WORD);
215 void WINAPI GlobalFreeAll16(HGLOBAL16);
216 DWORD WINAPI GlobalHandleNoRIP16(WORD);
217 WORD WINAPI GlobalHandleToSel16(HGLOBAL16);
218 HGLOBAL16 WINAPI GlobalLRUNewest16(HGLOBAL16);
219 HGLOBAL16 WINAPI GlobalLRUOldest16(HGLOBAL16);
220 VOID WINAPI GlobalNotify16(FARPROC16);
221 WORD WINAPI GlobalPageLock16(HGLOBAL16);
222 WORD WINAPI GlobalPageUnlock16(HGLOBAL16);
223 BOOL16 WINAPI IsSharedSelector16(HANDLE16);
224 BOOL16 WINAPI IsTask16(HTASK16);
225 HTASK16 WINAPI IsTaskLocked16(void);
226 DWORD WINAPI K32WOWCallback16(DWORD,DWORD);
227 BOOL WINAPI K32WOWCallback16Ex(DWORD,DWORD,DWORD,LPVOID,LPDWORD);
228 VOID WINAPI K32WOWDirectedYield16(WORD);
229 BOOL WINAPI K32WOWGetDescriptor(SEGPTR,LPLDT_ENTRY);
230 LPVOID WINAPI K32WOWGetVDMPointer(DWORD,DWORD,BOOL);
231 LPVOID WINAPI K32WOWGetVDMPointerFix(DWORD,DWORD,BOOL);
232 VOID WINAPI K32WOWGetVDMPointerUnfix(DWORD);
233 WORD WINAPI K32WOWGlobalAlloc16(WORD,DWORD);
234 DWORD WINAPI K32WOWGlobalAllocLock16(WORD,DWORD,WORD*);
235 WORD WINAPI K32WOWGlobalFree16(WORD);
236 SEGPTR WINAPI K32WOWGlobalLock16(HGLOBAL16);
237 DWORD WINAPI K32WOWGlobalLockSize16(WORD,PDWORD);
238 BOOL WINAPI K32WOWGlobalUnlock16(WORD);
239 WORD WINAPI K32WOWGlobalUnlockFree16(DWORD);
240 VOID WINAPI K32WOWYield16(void);
241 VOID WINAPI LogError16(UINT16, LPVOID);
242 VOID WINAPI LogParamError16(UINT16,FARPROC16,LPVOID);
243 WORD WINAPI LocalCountFree16(void);
244 WORD WINAPI LocalHandleDelta16(WORD);
245 WORD WINAPI LocalHeapSize16(void);
246 BOOL16 WINAPI LocalInit16(HANDLE16,WORD,WORD);
247 FARPROC16 WINAPI LocalNotify16(FARPROC16);
248 HTASK16 WINAPI LockCurrentTask16(BOOL16);
249 VOID WINAPI OldYield16(void);
250 VOID WINAPI WIN32_OldYield16(void);
251 VOID WINAPI PostEvent16(HTASK16);
252 WORD WINAPI PrestoChangoSelector16(WORD,WORD);
253 WORD WINAPI SelectorAccessRights16(WORD,WORD,WORD);
254 void WINAPI SetFastQueue16(DWORD,HQUEUE16);
255 VOID WINAPI SetPriority16(HTASK16,INT16);
256 FARPROC16 WINAPI SetResourceHandler16(HINSTANCE16,LPCSTR,FARPROC16);
257 WORD WINAPI SetSelectorLimit16(WORD,DWORD);
258 HQUEUE16 WINAPI SetTaskQueue16(HTASK16,HQUEUE16);
259 HQUEUE16 WINAPI SetThreadQueue16(DWORD,HQUEUE16);
260 VOID WINAPI SwitchStackTo16(WORD,WORD,WORD);
261 BOOL16 WINAPI WaitEvent16(HTASK16);
262 VOID WINAPI WriteOutProfiles16(void);
263 VOID WINAPI hmemcpy16(LPVOID,LPCVOID,LONG);
264 VOID WINAPI _CreateSysLevel(SYSLEVEL*,INT);
265 VOID WINAPI _EnterWin16Lock(void);
266 VOID WINAPI _LeaveWin16Lock(void);
269 INT16 WINAPI AccessResource16(HINSTANCE16,HRSRC16);
270 ATOM WINAPI AddAtom16(LPCSTR);
271 UINT16 WINAPI CompareString16(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD);
272 BOOL16 WINAPI CreateDirectory16(LPCSTR,LPVOID);
273 BOOL16 WINAPI DefineHandleTable16(WORD);
274 ATOM WINAPI DeleteAtom16(ATOM);
275 BOOL16 WINAPI DeleteFile16(LPCSTR);
276 void WINAPI ExitKernel16(void);
277 void WINAPI FatalAppExit16(UINT16,LPCSTR);
278 ATOM WINAPI FindAtom16(LPCSTR);
279 BOOL16 WINAPI FindClose16(HANDLE16);
280 VOID WINAPI FreeLibrary16(HINSTANCE16);
281 HANDLE16 WINAPI FindFirstFile16(LPCSTR,LPWIN32_FIND_DATAA);
282 BOOL16 WINAPI FindNextFile16(HANDLE16,LPWIN32_FIND_DATAA);
283 HRSRC16 WINAPI FindResource16(HINSTANCE16,LPCSTR,LPCSTR);
284 BOOL16 WINAPI FreeModule16(HMODULE16);
285 void WINAPI FreeProcInstance16(FARPROC16);
286 BOOL16 WINAPI FreeResource16(HGLOBAL16);
287 UINT16 WINAPI GetAtomName16(ATOM,LPSTR,INT16);
288 UINT16 WINAPI GetCurrentDirectory16(UINT16,LPSTR);
289 BOOL16 WINAPI GetDiskFreeSpace16(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
290 UINT16 WINAPI GetDriveType16(UINT16); /* yes, the arguments differ */
291 INT16 WINAPI GetLocaleInfo16(LCID,LCTYPE,LPSTR,INT16);
292 DWORD WINAPI GetFileAttributes16(LPCSTR);
293 DWORD WINAPI GetFreeSpace16(UINT16);
294 INT16 WINAPI GetModuleFileName16(HINSTANCE16,LPSTR,INT16);
295 HMODULE16 WINAPI GetModuleHandle16(LPCSTR);
296 UINT16 WINAPI GetPrivateProfileInt16(LPCSTR,LPCSTR,INT16,LPCSTR);
297 INT16 WINAPI GetPrivateProfileSection16(LPCSTR,LPSTR,UINT16,LPCSTR);
298 WORD WINAPI GetPrivateProfileSectionNames16(LPSTR,UINT16,LPCSTR);
299 INT16 WINAPI GetPrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16,LPCSTR);
300 BOOL16 WINAPI GetPrivateProfileStruct16(LPCSTR,LPCSTR,LPVOID,UINT16,LPCSTR);
301 FARPROC16 WINAPI GetProcAddress16(HMODULE16,LPCSTR);
302 UINT16 WINAPI GetProfileInt16(LPCSTR,LPCSTR,INT16);
303 INT16 WINAPI GetProfileSection16(LPCSTR,LPSTR,UINT16);
304 WORD WINAPI GetProfileSectionNames16(LPSTR,WORD);
305 INT16 WINAPI GetProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16);
306 DWORD WINAPI GetSelectorBase(WORD);
307 BOOL16 WINAPI GetStringType16(LCID,DWORD,LPCSTR,INT16,LPWORD);
308 UINT16 WINAPI GetSystemDirectory16(LPSTR,UINT16);
309 UINT16 WINAPI GetTempFileName16(BYTE,LPCSTR,UINT16,LPSTR);
310 LONG WINAPI GetVersion16(void);
311 BOOL16 WINAPI GetVersionEx16(OSVERSIONINFO16*);
312 BOOL16 WINAPI GetWinDebugInfo16(LPWINDEBUGINFO16,UINT16);
313 UINT16 WINAPI GetWindowsDirectory16(LPSTR,UINT16);
314 HGLOBAL16 WINAPI GlobalAlloc16(UINT16,DWORD);
315 DWORD WINAPI GlobalCompact16(DWORD);
316 LPVOID WINAPI GlobalLock16(HGLOBAL16);
317 WORD WINAPI GlobalFix16(HGLOBAL16);
318 UINT16 WINAPI GlobalFlags16(HGLOBAL16);
319 HGLOBAL16 WINAPI GlobalFree16(HGLOBAL16);
320 DWORD WINAPI GlobalHandle16(WORD);
321 HGLOBAL16 WINAPI GlobalReAlloc16(HGLOBAL16,DWORD,UINT16);
322 DWORD WINAPI GlobalSize16(HGLOBAL16);
323 VOID WINAPI GlobalUnfix16(HGLOBAL16);
324 BOOL16 WINAPI GlobalUnlock16(HGLOBAL16);
325 BOOL16 WINAPI GlobalUnWire16(HGLOBAL16);
326 SEGPTR WINAPI GlobalWire16(HGLOBAL16);
327 WORD WINAPI InitAtomTable16(WORD);
328 BOOL16 WINAPI IsBadCodePtr16(SEGPTR);
329 BOOL16 WINAPI IsBadHugeReadPtr16(SEGPTR,DWORD);
330 BOOL16 WINAPI IsBadHugeWritePtr16(SEGPTR,DWORD);
331 BOOL16 WINAPI IsBadReadPtr16(SEGPTR,UINT16);
332 BOOL16 WINAPI IsBadStringPtr16(SEGPTR,UINT16);
333 BOOL16 WINAPI IsBadWritePtr16(SEGPTR,UINT16);
334 BOOL16 WINAPI IsDBCSLeadByte16(BYTE);
335 HINSTANCE16 WINAPI LoadLibrary16(LPCSTR);
336 HINSTANCE16 WINAPI LoadModule16(LPCSTR,LPVOID);
337 HGLOBAL16 WINAPI LoadResource16(HINSTANCE16,HRSRC16);
338 HLOCAL16 WINAPI LocalAlloc16(UINT16,WORD);
339 UINT16 WINAPI LocalCompact16(UINT16);
340 UINT16 WINAPI LocalFlags16(HLOCAL16);
341 HLOCAL16 WINAPI LocalFree16(HLOCAL16);
342 HLOCAL16 WINAPI LocalHandle16(WORD);
343 SEGPTR WINAPI LocalLock16(HLOCAL16);
344 HLOCAL16 WINAPI LocalReAlloc16(HLOCAL16,WORD,UINT16);
345 UINT16 WINAPI LocalShrink16(HGLOBAL16,UINT16);
346 UINT16 WINAPI LocalSize16(HLOCAL16);
347 BOOL16 WINAPI LocalUnlock16(HLOCAL16);
348 LPVOID WINAPI LockResource16(HGLOBAL16);
349 HGLOBAL16 WINAPI LockSegment16(HGLOBAL16);
350 FARPROC16 WINAPI MakeProcInstance16(FARPROC16,HANDLE16);
351 HFILE16 WINAPI OpenFile16(LPCSTR,OFSTRUCT*,UINT16);
352 DWORD WINAPI RegCloseKey16(HKEY);
353 DWORD WINAPI RegCreateKey16(HKEY,LPCSTR,PHKEY);
354 DWORD WINAPI RegDeleteKey16(HKEY,LPCSTR);
355 DWORD WINAPI RegDeleteValue16(HKEY,LPSTR);
356 DWORD WINAPI RegEnumKey16(HKEY,DWORD,LPSTR,DWORD);
357 DWORD WINAPI RegEnumValue16(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
358 DWORD WINAPI RegOpenKey16(HKEY,LPCSTR,PHKEY);
359 DWORD WINAPI RegQueryValue16(HKEY,LPCSTR,LPSTR,LPDWORD);
360 DWORD WINAPI RegQueryValueEx16(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
361 DWORD WINAPI RegSetValue16(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
362 DWORD WINAPI RegSetValueEx16(HKEY,LPCSTR,DWORD,DWORD,CONST BYTE*,DWORD);
363 BOOL16 WINAPI RemoveDirectory16(LPCSTR);
364 BOOL16 WINAPI SetCurrentDirectory16(LPCSTR);
365 UINT16 WINAPI SetErrorMode16(UINT16);
366 BOOL16 WINAPI SetFileAttributes16(LPCSTR,DWORD);
367 UINT16 WINAPI SetHandleCount16(UINT16);
368 WORD WINAPI SetSelectorBase(WORD,DWORD);
369 LONG WINAPI SetSwapAreaSize16(WORD);
370 BOOL16 WINAPI SetWinDebugInfo16(LPWINDEBUGINFO16);
371 DWORD WINAPI SizeofResource16(HMODULE16,HRSRC16);
372 void WINAPI UnlockSegment16(HGLOBAL16);
373 BOOL16 WINAPI WritePrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
374 BOOL16 WINAPI WriteProfileString16(LPCSTR,LPCSTR,LPCSTR);
375 /* Yield16 will only be available from kernel module, use K32WOWYield instead */
376 VOID WINAPI Yield16(void);
377 SEGPTR WINAPI lstrcat16(SEGPTR,LPCSTR);
378 SEGPTR WINAPI lstrcatn16(SEGPTR,LPCSTR,INT16);
379 SEGPTR WINAPI lstrcpy16(SEGPTR,LPCSTR);
380 SEGPTR WINAPI lstrcpyn16(SEGPTR,LPCSTR,INT16);
381 INT16 WINAPI lstrlen16(LPCSTR);
382 HINSTANCE16 WINAPI WinExec16(LPCSTR,UINT16);
383 LONG WINAPI _hread16(HFILE16,LPVOID,LONG);
384 LONG WINAPI _hwrite16(HFILE16,LPCSTR,LONG);
385 HFILE16 WINAPI _lcreat16(LPCSTR,INT16);
386 HFILE16 WINAPI _lclose16(HFILE16);
387 LONG WINAPI _llseek16(HFILE16,LONG,INT16);
388 HFILE16 WINAPI _lopen16(LPCSTR,INT16);
389 UINT16 WINAPI _lread16(HFILE16,LPVOID,UINT16);
390 UINT16 WINAPI _lwrite16(HFILE16,LPCSTR,UINT16);
391 BOOL16 WINAPI WritePrivateProfileSection16(LPCSTR,LPCSTR,LPCSTR);
392 BOOL16 WINAPI WritePrivateProfileStruct16(LPCSTR,LPCSTR,LPVOID,UINT16,LPCSTR);
393 BOOL16 WINAPI WriteProfileSection16(LPCSTR,LPCSTR);
395 /* Wine-specific functions */
396 LONG WINAPI wine_call_to_16( FARPROC16 target, INT nArgs );
397 void WINAPI wine_call_to_16_regs_short( CONTEXT86 *context, INT nArgs );
398 void WINAPI wine_call_to_16_regs_long ( CONTEXT86 *context, INT nArgs );
400 /* Some optimizations */
401 extern inline LPVOID WINAPI MapSL( SEGPTR segptr )
403 return (char *)wine_ldt_copy.base[SELECTOROF(segptr) >> __AHSHIFT] + OFFSETOF(segptr);
406 #endif /* __WINE_WINE_WINBASE16_H */