Add some compatibility macros.
[wine] / include / wine / winbase16.h
1 /*
2  * Copyright (C) the Wine project
3  *
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.
8  *
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.
13  *
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
17  */
18
19 #ifndef __WINE_WINE_WINBASE16_H
20 #define __WINE_WINE_WINBASE16_H
21
22 #include <stdarg.h>
23 #include <windef.h>
24 #include <winbase.h>
25 #include <winnls.h>
26 #include <wine/windef16.h>
27 #include <wine/library.h>
28
29 #include <pshpack1.h>
30
31 /* Process database (i.e. a normal DOS PSP) */
32 typedef struct
33 {
34     WORD      int20;            /* 00 int 20h instruction */
35     WORD      nextParagraph;    /* 02 Segment of next paragraph */
36     BYTE      reserved1;
37     BYTE      dispatcher[5];    /* 05 Long call to DOS */
38     FARPROC16 savedint22;       /* 0a Saved int 22h handler */
39     FARPROC16 savedint23;       /* 0e Saved int 23h handler */
40     FARPROC16 savedint24;       /* 12 Saved int 24h handler */
41     WORD      parentPSP;        /* 16 Selector of parent PSP */
42     BYTE      fileHandles[20];  /* 18 Open file handles */
43     HANDLE16  environment;      /* 2c Selector of environment */
44     DWORD     saveStack;        /* 2e SS:SP on last int21 call */
45     WORD      nbFiles;          /* 32 Number of file handles */
46     SEGPTR    fileHandlesPtr;   /* 34 Pointer to file handle table */
47     HANDLE16  hFileHandles;     /* 38 Handle to fileHandlesPtr */
48     WORD      reserved3[17];
49     BYTE      fcb1[16];         /* 5c First FCB */
50     BYTE      fcb2[20];         /* 6c Second FCB */
51     BYTE      cmdLine[128];     /* 80 Command-line (first byte is len)*/
52     BYTE      padding[16];      /* Some apps access beyond the end of the cmd line */
53 } PDB16;
54
55 /* Task database. See 'Windows Internals' p. 226.
56  * Note that 16-bit OLE 2 libs like to read it directly
57  * so we have to keep entry offsets as they are.
58  */
59 typedef struct _TDB
60 {
61     HTASK16   hNext;              /* 00 Selector of next TDB */
62     DWORD     ss_sp;              /* 02 Stack pointer of task */
63     WORD      nEvents;            /* 06 Events for this task */
64     INT16     priority;           /* 08 Task priority, -32..15 */
65     WORD      unused1;            /* 0a */
66     HTASK16   hSelf;              /* 0c Selector of this TDB */
67     HANDLE16  hPrevInstance;      /* 0e Previous instance of module */
68     DWORD     unused2;            /* 10 */
69     WORD      ctrlword8087;       /* 14 80x87 control word */
70     WORD      flags;              /* 16 Task flags */
71     UINT16    error_mode;         /* 18 Error mode (see SetErrorMode)*/
72     WORD      version;            /* 1a Expected Windows version */
73     HANDLE16  hInstance;          /* 1c Instance handle for task */
74     HMODULE16 hModule;            /* 1e Module handle */
75     HQUEUE16  hQueue;             /* 20 Selector of task queue */
76     HTASK16   hParent;            /* 22 Selector of TDB of parent */
77     WORD      signal_flags;       /* 24 Flags for signal handler */
78     FARPROC16 sighandler;         /* 26 Signal handler */
79     FARPROC16 userhandler;        /* 2a USER signal handler */
80     FARPROC16 discardhandler;     /* 2e Handler for GlobalNotify() */
81     FARPROC16 int0;               /* 32 int 0 (divide by 0) handler */
82     FARPROC16 int2;               /* 36 int 2 (NMI) handler */
83     FARPROC16 int4;               /* 3a int 4 (INTO) handler */
84     FARPROC16 int6;               /* 3e int 6 (invalid opc) handler */
85     FARPROC16 int7;               /* 42 int 7 (coprocessor) handler */
86     FARPROC16 int3e;              /* 46 int 3e (80x87 emu) handler */
87     FARPROC16 int75;              /* 4a int 75 (80x87 error) handler */
88     DWORD     compat_flags;       /* 4e Compatibility flags */
89     BYTE      unused4[2];         /* 52 */
90     struct _TEB *teb;             /* 54 Pointer to thread database */
91     BYTE      unused5[8];         /* 58 */
92     HANDLE16  hPDB;               /* 60 Selector of PDB (i.e. PSP) */
93     SEGPTR    dta;                /* 62 Current DTA */
94     BYTE      curdrive;           /* 66 Current drive */
95     BYTE      curdir[65];         /* 67 Current directory */
96     WORD      nCmdShow;           /* a8 cmdShow parameter to WinMain */
97     HTASK16   hYieldTo;           /* aa Next task to schedule */
98     DWORD     dlls_to_init;       /* ac Ptr to DLLs to initialize */
99     HANDLE16  hCSAlias;           /* b0 Code segment for this TDB */
100     WORD      thunks[8*4];        /* b2 Make proc instance thunks */
101     BYTE      module_name[8];     /* f2 Module name for task */
102     WORD      magic;              /* fa TDB signature */
103     HANDLE    hEvent;             /* fc scheduler event handle */
104     PDB16     pdb;                /* 100 PDB for this task */
105 } TDB;
106
107 /* TDB flags */
108 #define TDBF_WINOLDAP   0x0001
109 #define TDBF_OS2APP     0x0008
110 #define TDBF_WIN32      0x0010
111
112 /* Windows 3.1 USER signals */
113 #define USIG16_TERMINATION      0x0020
114 #define USIG16_DLL_LOAD         0x0040
115 #define USIG16_DLL_UNLOAD       0x0080
116 #define USIG16_GPF              0x0666
117
118 typedef struct _SEGINFO {
119     UINT16    offSegment;
120     UINT16    cbSegment;
121     UINT16    flags;
122     UINT16    cbAlloc;
123     HGLOBAL16 h;
124     UINT16    alignShift;
125     UINT16    reserved[2];
126 } SEGINFO;
127
128 /* GetWinFlags */
129
130 #define WF_PMODE        0x0001
131 #define WF_CPU286       0x0002
132 #define WF_CPU386       0x0004
133 #define WF_CPU486       0x0008
134 #define WF_STANDARD     0x0010
135 #define WF_WIN286       0x0010
136 #define WF_ENHANCED     0x0020
137 #define WF_WIN386       0x0020
138 #define WF_CPU086       0x0040
139 #define WF_CPU186       0x0080
140 #define WF_LARGEFRAME   0x0100
141 #define WF_SMALLFRAME   0x0200
142 #define WF_80x87        0x0400
143 #define WF_PAGING       0x0800
144 #define WF_HASCPUID     0x2000
145 #define WF_WIN32WOW     0x4000  /* undoc */
146 #define WF_WLO          0x8000
147
148 /* Parameters for LoadModule() */
149 typedef struct
150 {
151     HGLOBAL16 hEnvironment; /* Environment segment */
152     SEGPTR    cmdLine;      /* Command-line */
153     SEGPTR    showCmd;      /* Code for ShowWindow() */
154     SEGPTR    reserved;
155 } LOADPARAMS16;
156
157 /* Debugging support (DEBUG SYSTEM ONLY) */
158 typedef struct
159 {
160     WORD    flags;
161     DWORD   dwOptions;
162     DWORD   dwFilter;
163     CHAR    achAllocModule[8];
164     DWORD   dwAllocBreak;
165     DWORD   dwAllocCount;
166 } WINDEBUGINFO16, *LPWINDEBUGINFO16;
167
168 #include <poppack.h>
169
170 #define INVALID_HANDLE_VALUE16  ((HANDLE16) -1)
171 #define INFINITE16      0xFFFF
172
173 typedef struct {
174         DWORD dwOSVersionInfoSize;
175         DWORD dwMajorVersion;
176         DWORD dwMinorVersion;
177         DWORD dwBuildNumber;
178         DWORD dwPlatformId;
179         CHAR szCSDVersion[128];
180 } OSVERSIONINFO16;
181
182
183 /*
184  * NE Header FORMAT FLAGS
185  */
186 #define NE_FFLAGS_SINGLEDATA    0x0001
187 #define NE_FFLAGS_MULTIPLEDATA  0x0002
188 #define NE_FFLAGS_WIN32         0x0010
189 #define NE_FFLAGS_BUILTIN       0x0020  /* Wine built-in module */
190 #define NE_FFLAGS_FRAMEBUF      0x0100  /* OS/2 fullscreen app */
191 #define NE_FFLAGS_CONSOLE       0x0200  /* OS/2 console app */
192 #define NE_FFLAGS_GUI           0x0300  /* right, (NE_FFLAGS_FRAMEBUF | NE_FFLAGS_CONSOLE) */
193 #define NE_FFLAGS_SELFLOAD      0x0800
194 #define NE_FFLAGS_LINKERROR     0x2000
195 #define NE_FFLAGS_CALLWEP       0x4000
196 #define NE_FFLAGS_LIBMODULE     0x8000
197
198 /*
199  * NE Header OPERATING SYSTEM
200  */
201 #define NE_OSFLAGS_UNKNOWN      0x01
202 #define NE_OSFLAGS_WINDOWS      0x04
203
204 /*
205  * NE Header ADDITIONAL FLAGS
206  */
207 #define NE_AFLAGS_WIN2_PROTMODE 0x02
208 #define NE_AFLAGS_WIN2_PROFONTS 0x04
209 #define NE_AFLAGS_FASTLOAD      0x08
210
211 /*
212  * Segment Flags
213  */
214 #define NE_SEGFLAGS_DATA        0x0001
215 #define NE_SEGFLAGS_ALLOCATED   0x0002
216 #define NE_SEGFLAGS_LOADED      0x0004
217 #define NE_SEGFLAGS_ITERATED    0x0008
218 #define NE_SEGFLAGS_MOVEABLE    0x0010
219 #define NE_SEGFLAGS_SHAREABLE   0x0020
220 #define NE_SEGFLAGS_PRELOAD     0x0040
221 #define NE_SEGFLAGS_EXECUTEONLY 0x0080
222 #define NE_SEGFLAGS_READONLY    0x0080
223 #define NE_SEGFLAGS_RELOC_DATA  0x0100
224 #define NE_SEGFLAGS_SELFLOAD    0x0800
225 #define NE_SEGFLAGS_DISCARDABLE 0x1000
226 #define NE_SEGFLAGS_32BIT       0x2000
227
228 /*
229  * Resource table structures.
230  */
231 typedef struct
232 {
233     WORD     offset;
234     WORD     length;
235     WORD     flags;
236     WORD     id;
237     HANDLE16 handle;
238     WORD     usage;
239 } NE_NAMEINFO;
240
241 typedef struct
242 {
243     WORD        type_id;   /* Type identifier */
244     WORD        count;     /* Number of resources of this type */
245     FARPROC16   resloader; /* SetResourceHandler() */
246     /*
247      * Name info array.
248      */
249 } NE_TYPEINFO;
250
251 #define NE_RSCTYPE_CURSOR         0x8001
252 #define NE_RSCTYPE_BITMAP         0x8002
253 #define NE_RSCTYPE_ICON           0x8003
254 #define NE_RSCTYPE_MENU           0x8004
255 #define NE_RSCTYPE_DIALOG         0x8005
256 #define NE_RSCTYPE_STRING         0x8006
257 #define NE_RSCTYPE_FONTDIR        0x8007
258 #define NE_RSCTYPE_FONT           0x8008
259 #define NE_RSCTYPE_ACCELERATOR    0x8009
260 #define NE_RSCTYPE_RCDATA         0x800a
261 #define NE_RSCTYPE_GROUP_CURSOR   0x800c
262 #define NE_RSCTYPE_GROUP_ICON     0x800e
263
264
265 #define __AHSHIFT  3  /* don't change! */
266 #define __AHINCR   (1 << __AHSHIFT)
267
268 /* undocumented functions */
269 WORD        WINAPI AllocCStoDSAlias16(WORD);
270 WORD        WINAPI AllocDStoCSAlias16(WORD);
271 HGLOBAL16   WINAPI AllocResource16(HINSTANCE16,HRSRC16,DWORD);
272 WORD        WINAPI AllocSelector16(WORD);
273 WORD        WINAPI AllocSelectorArray16(WORD);
274 VOID        WINAPI DirectedYield16(HTASK16);
275 HGLOBAL16   WINAPI DirectResAlloc16(HINSTANCE16,WORD,UINT16);
276 HANDLE16    WINAPI FarGetOwner16(HGLOBAL16);
277 VOID        WINAPI FarSetOwner16(HGLOBAL16,HANDLE16);
278 FARPROC16   WINAPI FileCDR16(FARPROC16);
279 WORD        WINAPI FreeSelector16(WORD);
280 HANDLE16    WINAPI GetAtomHandle16(ATOM);
281 HANDLE16    WINAPI GetCodeHandle16(FARPROC16);
282 BOOL16      WINAPI GetCodeInfo16(FARPROC16,SEGINFO*);
283 DWORD       WINAPI GetCurrentPDB16(void);
284 HTASK16     WINAPI GetCurrentTask(void);
285 SEGPTR      WINAPI GetDOSEnvironment16(void);
286 HMODULE16   WINAPI GetExePtr(HANDLE16);
287 WORD        WINAPI GetExeVersion16(void);
288 WORD        WINAPI GetExpWinVer16(HMODULE16);
289 HQUEUE16    WINAPI GetFastQueue16(void);
290 DWORD       WINAPI GetHeapSpaces16(HMODULE16);
291 INT16       WINAPI GetInstanceData16(HINSTANCE16,WORD,INT16);
292 BOOL16      WINAPI GetModuleName16(HINSTANCE16,LPSTR,INT16);
293 INT16       WINAPI GetModuleUsage16(HINSTANCE16);
294 UINT16      WINAPI GetNumTasks16(void);
295 SEGPTR      WINAPI GetpWin16Lock16(void);
296 DWORD       WINAPI GetSelectorLimit16(WORD);
297 FARPROC16   WINAPI GetSetKernelDOSProc16(FARPROC16 DosProc);
298 HINSTANCE16 WINAPI GetTaskDS16(void);
299 HQUEUE16    WINAPI GetTaskQueue16(HTASK16);
300 HQUEUE16    WINAPI GetThreadQueue16(DWORD);
301 DWORD       WINAPI GetWinFlags16(void);
302 DWORD       WINAPI GlobalDOSAlloc16(DWORD);
303 WORD        WINAPI GlobalDOSFree16(WORD);
304 void        WINAPI GlobalFreeAll16(HGLOBAL16);
305 DWORD       WINAPI GlobalHandleNoRIP16(WORD);
306 WORD        WINAPI GlobalHandleToSel16(HGLOBAL16);
307 HGLOBAL16   WINAPI GlobalLRUNewest16(HGLOBAL16);
308 HGLOBAL16   WINAPI GlobalLRUOldest16(HGLOBAL16);
309 VOID        WINAPI GlobalNotify16(FARPROC16);
310 WORD        WINAPI GlobalPageLock16(HGLOBAL16);
311 WORD        WINAPI GlobalPageUnlock16(HGLOBAL16);
312 SEGPTR      WINAPI HasGPHandler16(SEGPTR);
313 BOOL16      WINAPI IsSharedSelector16(HANDLE16);
314 BOOL16      WINAPI IsTask16(HTASK16);
315 HTASK16     WINAPI IsTaskLocked16(void);
316 DWORD       WINAPI K32WOWCallback16(DWORD,DWORD);
317 BOOL        WINAPI K32WOWCallback16Ex(DWORD,DWORD,DWORD,LPVOID,LPDWORD);
318 VOID        WINAPI K32WOWDirectedYield16(WORD);
319 BOOL        WINAPI K32WOWGetDescriptor(SEGPTR,LPLDT_ENTRY);
320 LPVOID      WINAPI K32WOWGetVDMPointer(DWORD,DWORD,BOOL);
321 LPVOID      WINAPI K32WOWGetVDMPointerFix(DWORD,DWORD,BOOL);
322 VOID        WINAPI K32WOWGetVDMPointerUnfix(DWORD);
323 WORD        WINAPI K32WOWGlobalAlloc16(WORD,DWORD);
324 DWORD       WINAPI K32WOWGlobalAllocLock16(WORD,DWORD,WORD*);
325 WORD        WINAPI K32WOWGlobalFree16(WORD);
326 SEGPTR      WINAPI K32WOWGlobalLock16(HGLOBAL16);
327 DWORD       WINAPI K32WOWGlobalLockSize16(WORD,PDWORD);
328 BOOL        WINAPI K32WOWGlobalUnlock16(WORD);
329 WORD        WINAPI K32WOWGlobalUnlockFree16(DWORD);
330 VOID        WINAPI K32WOWYield16(void);
331 VOID        WINAPI LogError16(UINT16, LPVOID);
332 VOID        WINAPI LogParamError16(UINT16,FARPROC16,LPVOID);
333 WORD        WINAPI LocalCountFree16(void);
334 WORD        WINAPI LocalHandleDelta16(WORD);
335 WORD        WINAPI LocalHeapSize16(void);
336 BOOL16      WINAPI LocalInit16(HANDLE16,WORD,WORD);
337 FARPROC16   WINAPI LocalNotify16(FARPROC16);
338 HTASK16     WINAPI LockCurrentTask16(BOOL16);
339 VOID        WINAPI OldYield16(void);
340 VOID        WINAPI WIN32_OldYield16(void);
341 VOID        WINAPI PostEvent16(HTASK16);
342 WORD        WINAPI PrestoChangoSelector16(WORD,WORD);
343 WORD        WINAPI SelectorAccessRights16(WORD,WORD,WORD);
344 void        WINAPI SetFastQueue16(DWORD,HQUEUE16);
345 VOID        WINAPI SetPriority16(HTASK16,INT16);
346 FARPROC16   WINAPI SetResourceHandler16(HINSTANCE16,LPCSTR,FARPROC16);
347 WORD        WINAPI SetSelectorLimit16(WORD,DWORD);
348 HQUEUE16    WINAPI SetTaskQueue16(HTASK16,HQUEUE16);
349 HQUEUE16    WINAPI SetThreadQueue16(DWORD,HQUEUE16);
350 VOID        WINAPI SwitchStackTo16(WORD,WORD,WORD);
351 BOOL16      WINAPI WaitEvent16(HTASK16);
352 VOID        WINAPI WriteOutProfiles16(void);
353 VOID        WINAPI hmemcpy16(LPVOID,LPCVOID,LONG);
354 VOID        WINAPI _CreateSysLevel(SYSLEVEL*,INT);
355 VOID        WINAPI _EnterWin16Lock(void);
356 VOID        WINAPI _LeaveWin16Lock(void);
357
358
359 INT16       WINAPI AccessResource16(HINSTANCE16,HRSRC16);
360 ATOM        WINAPI AddAtom16(LPCSTR);
361 UINT16      WINAPI CompareString16(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD);
362 BOOL16      WINAPI CreateDirectory16(LPCSTR,LPVOID);
363 BOOL16      WINAPI DefineHandleTable16(WORD);
364 ATOM        WINAPI DeleteAtom16(ATOM);
365 BOOL16      WINAPI DeleteFile16(LPCSTR);
366 void        WINAPI ExitKernel16(void);
367 void        WINAPI FatalAppExit16(UINT16,LPCSTR);
368 ATOM        WINAPI FindAtom16(LPCSTR);
369 BOOL16      WINAPI FindClose16(HANDLE16);
370 VOID        WINAPI FreeLibrary16(HINSTANCE16);
371 HANDLE16    WINAPI FindFirstFile16(LPCSTR,LPWIN32_FIND_DATAA);
372 BOOL16      WINAPI FindNextFile16(HANDLE16,LPWIN32_FIND_DATAA);
373 HRSRC16     WINAPI FindResource16(HINSTANCE16,LPCSTR,LPCSTR);
374 BOOL16      WINAPI FreeModule16(HMODULE16);
375 void        WINAPI FreeProcInstance16(FARPROC16);
376 BOOL16      WINAPI FreeResource16(HGLOBAL16);
377 UINT16      WINAPI GetAtomName16(ATOM,LPSTR,INT16);
378 UINT16      WINAPI GetCurrentDirectory16(UINT16,LPSTR);
379 BOOL16      WINAPI GetDiskFreeSpace16(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
380 UINT16      WINAPI GetDriveType16(UINT16); /* yes, the arguments differ */
381 INT16       WINAPI GetLocaleInfo16(LCID,LCTYPE,LPSTR,INT16);
382 DWORD       WINAPI GetFileAttributes16(LPCSTR);
383 DWORD       WINAPI GetFreeSpace16(UINT16);
384 INT16       WINAPI GetModuleFileName16(HINSTANCE16,LPSTR,INT16);
385 HMODULE16   WINAPI GetModuleHandle16(LPCSTR);
386 UINT16      WINAPI GetPrivateProfileInt16(LPCSTR,LPCSTR,INT16,LPCSTR);
387 INT16       WINAPI GetPrivateProfileSection16(LPCSTR,LPSTR,UINT16,LPCSTR);
388 WORD        WINAPI GetPrivateProfileSectionNames16(LPSTR,UINT16,LPCSTR);
389 INT16       WINAPI GetPrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16,LPCSTR);
390 BOOL16      WINAPI GetPrivateProfileStruct16(LPCSTR,LPCSTR,LPVOID,UINT16,LPCSTR);
391 FARPROC16   WINAPI GetProcAddress16(HMODULE16,LPCSTR);
392 UINT16      WINAPI GetProfileInt16(LPCSTR,LPCSTR,INT16);
393 INT16       WINAPI GetProfileSection16(LPCSTR,LPSTR,UINT16);
394 WORD        WINAPI GetProfileSectionNames16(LPSTR,WORD);
395 INT16       WINAPI GetProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16);
396 DWORD       WINAPI GetSelectorBase(WORD);
397 BOOL16      WINAPI GetStringType16(LCID,DWORD,LPCSTR,INT16,LPWORD);
398 UINT16      WINAPI GetSystemDirectory16(LPSTR,UINT16);
399 UINT16      WINAPI GetTempFileName16(BYTE,LPCSTR,UINT16,LPSTR);
400 DWORD       WINAPI GetVersion16(void);
401 BOOL16      WINAPI GetVersionEx16(OSVERSIONINFO16*);
402 BOOL16      WINAPI GetWinDebugInfo16(LPWINDEBUGINFO16,UINT16);
403 UINT16      WINAPI GetWindowsDirectory16(LPSTR,UINT16);
404 HGLOBAL16   WINAPI GlobalAlloc16(UINT16,DWORD);
405 DWORD       WINAPI GlobalCompact16(DWORD);
406 LPVOID      WINAPI GlobalLock16(HGLOBAL16);
407 WORD        WINAPI GlobalFix16(HGLOBAL16);
408 UINT16      WINAPI GlobalFlags16(HGLOBAL16);
409 HGLOBAL16   WINAPI GlobalFree16(HGLOBAL16);
410 DWORD       WINAPI GlobalHandle16(WORD);
411 HGLOBAL16   WINAPI GlobalReAlloc16(HGLOBAL16,DWORD,UINT16);
412 DWORD       WINAPI GlobalSize16(HGLOBAL16);
413 VOID        WINAPI GlobalUnfix16(HGLOBAL16);
414 BOOL16      WINAPI GlobalUnlock16(HGLOBAL16);
415 BOOL16      WINAPI GlobalUnWire16(HGLOBAL16);
416 SEGPTR      WINAPI GlobalWire16(HGLOBAL16);
417 WORD        WINAPI InitAtomTable16(WORD);
418 BOOL16      WINAPI IsBadCodePtr16(SEGPTR);
419 BOOL16      WINAPI IsBadHugeReadPtr16(SEGPTR,DWORD);
420 BOOL16      WINAPI IsBadHugeWritePtr16(SEGPTR,DWORD);
421 BOOL16      WINAPI IsBadReadPtr16(SEGPTR,UINT16);
422 BOOL16      WINAPI IsBadStringPtr16(SEGPTR,UINT16);
423 BOOL16      WINAPI IsBadWritePtr16(SEGPTR,UINT16);
424 BOOL16      WINAPI IsDBCSLeadByte16(BYTE);
425 HINSTANCE16 WINAPI LoadLibrary16(LPCSTR);
426 HINSTANCE16 WINAPI LoadModule16(LPCSTR,LPVOID);
427 HGLOBAL16   WINAPI LoadResource16(HINSTANCE16,HRSRC16);
428 HLOCAL16    WINAPI LocalAlloc16(UINT16,WORD);
429 UINT16      WINAPI LocalCompact16(UINT16);
430 UINT16      WINAPI LocalFlags16(HLOCAL16);
431 HLOCAL16    WINAPI LocalFree16(HLOCAL16);
432 HLOCAL16    WINAPI LocalHandle16(WORD);
433 SEGPTR      WINAPI LocalLock16(HLOCAL16);
434 HLOCAL16    WINAPI LocalReAlloc16(HLOCAL16,WORD,UINT16);
435 UINT16      WINAPI LocalShrink16(HGLOBAL16,UINT16);
436 UINT16      WINAPI LocalSize16(HLOCAL16);
437 BOOL16      WINAPI LocalUnlock16(HLOCAL16);
438 LPVOID      WINAPI LockResource16(HGLOBAL16);
439 HGLOBAL16   WINAPI LockSegment16(HGLOBAL16);
440 FARPROC16   WINAPI MakeProcInstance16(FARPROC16,HANDLE16);
441 HFILE16     WINAPI OpenFile16(LPCSTR,OFSTRUCT*,UINT16);
442 DWORD       WINAPI RegCloseKey16(HKEY);
443 DWORD       WINAPI RegCreateKey16(HKEY,LPCSTR,PHKEY);
444 DWORD       WINAPI RegDeleteKey16(HKEY,LPCSTR);
445 DWORD       WINAPI RegDeleteValue16(HKEY,LPSTR);
446 DWORD       WINAPI RegEnumKey16(HKEY,DWORD,LPSTR,DWORD);
447 DWORD       WINAPI RegEnumValue16(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
448 DWORD       WINAPI RegOpenKey16(HKEY,LPCSTR,PHKEY);
449 DWORD       WINAPI RegQueryValue16(HKEY,LPCSTR,LPSTR,LPDWORD);
450 DWORD       WINAPI RegQueryValueEx16(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
451 DWORD       WINAPI RegSetValue16(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
452 DWORD       WINAPI RegSetValueEx16(HKEY,LPCSTR,DWORD,DWORD,CONST BYTE*,DWORD);
453 BOOL16      WINAPI RemoveDirectory16(LPCSTR);
454 BOOL16      WINAPI SetCurrentDirectory16(LPCSTR);
455 UINT16      WINAPI SetErrorMode16(UINT16);
456 BOOL16      WINAPI SetFileAttributes16(LPCSTR,DWORD);
457 UINT16      WINAPI SetHandleCount16(UINT16);
458 WORD        WINAPI SetSelectorBase(WORD,DWORD);
459 LONG        WINAPI SetSwapAreaSize16(WORD);
460 BOOL16      WINAPI SetWinDebugInfo16(LPWINDEBUGINFO16);
461 DWORD       WINAPI SizeofResource16(HMODULE16,HRSRC16);
462 void        WINAPI UnlockSegment16(HGLOBAL16);
463 BOOL16      WINAPI WritePrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
464 BOOL16      WINAPI WriteProfileString16(LPCSTR,LPCSTR,LPCSTR);
465 /* Yield16 will only be available from kernel module, use K32WOWYield instead */
466 VOID        WINAPI Yield16(void);
467 SEGPTR      WINAPI lstrcat16(SEGPTR,LPCSTR);
468 SEGPTR      WINAPI lstrcatn16(SEGPTR,LPCSTR,INT16);
469 SEGPTR      WINAPI lstrcpy16(SEGPTR,LPCSTR);
470 SEGPTR      WINAPI lstrcpyn16(SEGPTR,LPCSTR,INT16);
471 INT16       WINAPI lstrlen16(LPCSTR);
472 HINSTANCE16 WINAPI WinExec16(LPCSTR,UINT16);
473 LONG        WINAPI _hread16(HFILE16,LPVOID,LONG);
474 LONG        WINAPI _hwrite16(HFILE16,LPCSTR,LONG);
475 HFILE16     WINAPI _lcreat16(LPCSTR,INT16);
476 HFILE16     WINAPI _lclose16(HFILE16);
477 LONG        WINAPI _llseek16(HFILE16,LONG,INT16);
478 HFILE16     WINAPI _lopen16(LPCSTR,INT16);
479 UINT16      WINAPI _lread16(HFILE16,LPVOID,UINT16);
480 UINT16      WINAPI _lwrite16(HFILE16,LPCSTR,UINT16);
481 BOOL16      WINAPI WritePrivateProfileSection16(LPCSTR,LPCSTR,LPCSTR);
482 BOOL16      WINAPI WritePrivateProfileStruct16(LPCSTR,LPCSTR,LPVOID,UINT16,LPCSTR);
483 BOOL16      WINAPI WriteProfileSection16(LPCSTR,LPCSTR);
484
485 /* Some optimizations */
486 extern inline LPVOID WINAPI MapSL( SEGPTR segptr )
487 {
488     return (char *)wine_ldt_copy.base[SELECTOROF(segptr) >> __AHSHIFT] + OFFSETOF(segptr);
489 }
490
491 #endif /* __WINE_WINE_WINBASE16_H */