Fix the definition of structs NUMBERFMT* and CURRENCYFMT*.
[wine] / include / wine / winbase16.h
1 #ifndef __WINE_WINE_WINBASE16_H
2 #define __WINE_WINE_WINBASE16_H
3
4 #include "windef.h"
5 #include "winbase.h"
6 #include "winnls.h"
7 #include "wine/windef16.h"
8 #include "wine/library.h"
9
10 #include "pshpack1.h"
11 typedef struct _SEGINFO {
12     UINT16    offSegment;
13     UINT16    cbSegment;
14     UINT16    flags;
15     UINT16    cbAlloc;
16     HGLOBAL16 h;
17     UINT16    alignShift;
18     UINT16    reserved[2];
19 } SEGINFO;
20
21 /* GetWinFlags */
22
23 #define WF_PMODE        0x0001
24 #define WF_CPU286       0x0002
25 #define WF_CPU386       0x0004
26 #define WF_CPU486       0x0008
27 #define WF_STANDARD     0x0010
28 #define WF_WIN286       0x0010
29 #define WF_ENHANCED     0x0020
30 #define WF_WIN386       0x0020
31 #define WF_CPU086       0x0040
32 #define WF_CPU186       0x0080
33 #define WF_LARGEFRAME   0x0100
34 #define WF_SMALLFRAME   0x0200
35 #define WF_80x87        0x0400
36 #define WF_PAGING       0x0800
37 #define WF_HASCPUID     0x2000
38 #define WF_WIN32WOW     0x4000  /* undoc */
39 #define WF_WLO          0x8000
40
41 /* Parameters for LoadModule() */
42 typedef struct
43 {
44     HGLOBAL16 hEnvironment;         /* Environment segment */
45     SEGPTR    cmdLine WINE_PACKED;  /* Command-line */
46     SEGPTR    showCmd WINE_PACKED;  /* Code for ShowWindow() */
47     SEGPTR    reserved WINE_PACKED;
48 } LOADPARAMS16;
49
50 #include "poppack.h"
51
52 #define INVALID_HANDLE_VALUE16  ((HANDLE16) -1)
53 #define INFINITE16      0xFFFF
54
55 typedef struct {
56         DWORD dwOSVersionInfoSize;
57         DWORD dwMajorVersion;
58         DWORD dwMinorVersion;
59         DWORD dwBuildNumber;
60         DWORD dwPlatformId;
61         CHAR szCSDVersion[128];
62 } OSVERSIONINFO16;
63
64
65 /*
66  * NE Header FORMAT FLAGS
67  */
68 #define NE_FFLAGS_SINGLEDATA    0x0001
69 #define NE_FFLAGS_MULTIPLEDATA  0x0002
70 #define NE_FFLAGS_WIN32         0x0010
71 #define NE_FFLAGS_BUILTIN       0x0020  /* Wine built-in module */
72 #define NE_FFLAGS_FRAMEBUF      0x0100  /* OS/2 fullscreen app */
73 #define NE_FFLAGS_CONSOLE       0x0200  /* OS/2 console app */
74 #define NE_FFLAGS_GUI           0x0300  /* right, (NE_FFLAGS_FRAMEBUF | NE_FFLAGS_CONSOLE) */
75 #define NE_FFLAGS_SELFLOAD      0x0800
76 #define NE_FFLAGS_LINKERROR     0x2000
77 #define NE_FFLAGS_CALLWEP       0x4000
78 #define NE_FFLAGS_LIBMODULE     0x8000
79
80 /*
81  * NE Header OPERATING SYSTEM
82  */
83 #define NE_OSFLAGS_UNKNOWN      0x01
84 #define NE_OSFLAGS_WINDOWS      0x04
85
86 /*
87  * NE Header ADDITIONAL FLAGS
88  */
89 #define NE_AFLAGS_WIN2_PROTMODE 0x02
90 #define NE_AFLAGS_WIN2_PROFONTS 0x04
91 #define NE_AFLAGS_FASTLOAD      0x08
92
93 /*
94  * Segment Flags
95  */
96 #define NE_SEGFLAGS_DATA        0x0001
97 #define NE_SEGFLAGS_ALLOCATED   0x0002
98 #define NE_SEGFLAGS_LOADED      0x0004
99 #define NE_SEGFLAGS_ITERATED    0x0008
100 #define NE_SEGFLAGS_MOVEABLE    0x0010
101 #define NE_SEGFLAGS_SHAREABLE   0x0020
102 #define NE_SEGFLAGS_PRELOAD     0x0040
103 #define NE_SEGFLAGS_EXECUTEONLY 0x0080
104 #define NE_SEGFLAGS_READONLY    0x0080
105 #define NE_SEGFLAGS_RELOC_DATA  0x0100
106 #define NE_SEGFLAGS_SELFLOAD    0x0800
107 #define NE_SEGFLAGS_DISCARDABLE 0x1000
108 #define NE_SEGFLAGS_32BIT       0x2000
109
110 /*
111  * Resource table structures.
112  */
113 typedef struct
114 {
115     WORD     offset;
116     WORD     length;
117     WORD     flags;
118     WORD     id;
119     HANDLE16 handle;
120     WORD     usage;
121 } NE_NAMEINFO;
122
123 typedef struct
124 {
125     WORD        type_id;   /* Type identifier */
126     WORD        count;     /* Number of resources of this type */
127     FARPROC16   resloader; /* SetResourceHandler() */
128     /*
129      * Name info array.
130      */
131 } NE_TYPEINFO;
132
133 #define NE_RSCTYPE_CURSOR         0x8001
134 #define NE_RSCTYPE_BITMAP         0x8002
135 #define NE_RSCTYPE_ICON           0x8003
136 #define NE_RSCTYPE_MENU           0x8004
137 #define NE_RSCTYPE_DIALOG         0x8005
138 #define NE_RSCTYPE_STRING         0x8006
139 #define NE_RSCTYPE_FONTDIR        0x8007
140 #define NE_RSCTYPE_FONT           0x8008
141 #define NE_RSCTYPE_ACCELERATOR    0x8009
142 #define NE_RSCTYPE_RCDATA         0x800a
143 #define NE_RSCTYPE_GROUP_CURSOR   0x800c
144 #define NE_RSCTYPE_GROUP_ICON     0x800e
145
146
147 #define __AHSHIFT  3  /* don't change! */
148 #define __AHINCR   (1 << __AHSHIFT)
149
150 /* undocumented functions */
151 WORD        WINAPI AllocCStoDSAlias16(WORD);
152 WORD        WINAPI AllocDStoCSAlias16(WORD);
153 HGLOBAL16   WINAPI AllocResource16(HINSTANCE16,HRSRC16,DWORD);
154 WORD        WINAPI AllocSelector16(WORD);
155 WORD        WINAPI AllocSelectorArray16(WORD);
156 VOID        WINAPI DirectedYield16(HTASK16);
157 HGLOBAL16   WINAPI DirectResAlloc16(HINSTANCE16,WORD,UINT16);
158 HANDLE16    WINAPI FarGetOwner16(HGLOBAL16);
159 VOID        WINAPI FarSetOwner16(HGLOBAL16,HANDLE16);
160 FARPROC16   WINAPI FileCDR16(FARPROC16);
161 WORD        WINAPI FreeSelector16(WORD);
162 HANDLE16    WINAPI GetAtomHandle16(ATOM);
163 HANDLE16    WINAPI GetCodeHandle16(FARPROC16);
164 BOOL16      WINAPI GetCodeInfo16(FARPROC16,SEGINFO*);
165 DWORD       WINAPI GetCurrentPDB16(void);
166 HTASK16     WINAPI GetCurrentTask(void);
167 SEGPTR      WINAPI GetDOSEnvironment16(void);
168 HMODULE16   WINAPI GetExePtr(HANDLE16);
169 WORD        WINAPI GetExeVersion16(void);
170 WORD        WINAPI GetExpWinVer16(HMODULE16);
171 HANDLE      WINAPI GetFastQueue16(void);
172 DWORD       WINAPI GetHeapSpaces16(HMODULE16);
173 INT16       WINAPI GetInstanceData16(HINSTANCE16,WORD,INT16);
174 BOOL16      WINAPI GetModuleName16(HINSTANCE16,LPSTR,INT16);
175 INT16       WINAPI GetModuleUsage16(HINSTANCE16);
176 UINT16      WINAPI GetNumTasks16(void);
177 SEGPTR      WINAPI GetpWin16Lock16(void);
178 DWORD       WINAPI GetSelectorLimit16(WORD);
179 FARPROC16   WINAPI GetSetKernelDOSProc16(FARPROC16 DosProc);
180 HINSTANCE16 WINAPI GetTaskDS16(void);
181 HQUEUE16    WINAPI GetTaskQueue16(HTASK16);
182 HQUEUE16    WINAPI GetThreadQueue16(DWORD);
183 DWORD       WINAPI GetWinFlags16(void);
184 DWORD       WINAPI GlobalDOSAlloc16(DWORD);
185 WORD        WINAPI GlobalDOSFree16(WORD);
186 void        WINAPI GlobalFreeAll16(HGLOBAL16);
187 DWORD       WINAPI GlobalHandleNoRIP16(WORD);
188 WORD        WINAPI GlobalHandleToSel16(HGLOBAL16);
189 HGLOBAL16   WINAPI GlobalLRUNewest16(HGLOBAL16);
190 HGLOBAL16   WINAPI GlobalLRUOldest16(HGLOBAL16);
191 VOID        WINAPI GlobalNotify16(FARPROC16);
192 WORD        WINAPI GlobalPageLock16(HGLOBAL16);
193 WORD        WINAPI GlobalPageUnlock16(HGLOBAL16);
194 BOOL16      WINAPI IsSharedSelector16(HANDLE16);
195 BOOL16      WINAPI IsTask16(HTASK16);
196 HTASK16     WINAPI IsTaskLocked16(void);
197 SEGPTR      WINAPI K32WOWGlobalLock16(HGLOBAL16);
198 VOID        WINAPI LogError16(UINT16, LPVOID);
199 VOID        WINAPI LogParamError16(UINT16,FARPROC16,LPVOID);
200 WORD        WINAPI LocalCountFree16(void);
201 WORD        WINAPI LocalHandleDelta16(WORD);
202 WORD        WINAPI LocalHeapSize16(void);
203 BOOL16      WINAPI LocalInit16(HANDLE16,WORD,WORD);
204 FARPROC16   WINAPI LocalNotify16(FARPROC16);
205 HTASK16     WINAPI LockCurrentTask16(BOOL16);
206 VOID        WINAPI OldYield16(void);
207 VOID        WINAPI WIN32_OldYield16(void);
208 VOID        WINAPI PostEvent16(HTASK16);
209 WORD        WINAPI PrestoChangoSelector16(WORD,WORD);
210 WORD        WINAPI SelectorAccessRights16(WORD,WORD,WORD);
211 void        WINAPI SetFastQueue16(DWORD,HANDLE);
212 VOID        WINAPI SetPriority16(HTASK16,INT16);
213 FARPROC16   WINAPI SetResourceHandler16(HINSTANCE16,LPCSTR,FARPROC16);
214 WORD        WINAPI SetSelectorLimit16(WORD,DWORD);
215 HQUEUE16    WINAPI SetTaskQueue16(HTASK16,HQUEUE16);
216 HQUEUE16    WINAPI SetThreadQueue16(DWORD,HQUEUE16);
217 VOID        WINAPI SwitchStackTo16(WORD,WORD,WORD);
218 BOOL16      WINAPI WaitEvent16(HTASK16);
219 VOID        WINAPI WriteOutProfiles16(void);
220 VOID        WINAPI hmemcpy16(LPVOID,LPCVOID,LONG);
221 VOID        WINAPI _CreateSysLevel(SYSLEVEL*,INT);
222 VOID        WINAPI _EnterWin16Lock(void);
223 VOID        WINAPI _LeaveWin16Lock(void);
224
225
226 INT16       WINAPI AccessResource16(HINSTANCE16,HRSRC16);
227 ATOM        WINAPI AddAtom16(LPCSTR);
228 UINT16      WINAPI CompareString16(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD);
229 BOOL16      WINAPI CreateDirectory16(LPCSTR,LPVOID);
230 BOOL16      WINAPI DefineHandleTable16(WORD);
231 ATOM        WINAPI DeleteAtom16(ATOM);
232 BOOL16      WINAPI DeleteFile16(LPCSTR);
233 void        WINAPI ExitKernel16(void);
234 void        WINAPI FatalAppExit16(UINT16,LPCSTR);
235 ATOM        WINAPI FindAtom16(LPCSTR);
236 BOOL16      WINAPI FindClose16(HANDLE16);
237 VOID        WINAPI FreeLibrary16(HINSTANCE16);
238 HANDLE16    WINAPI FindFirstFile16(LPCSTR,LPWIN32_FIND_DATAA);
239 BOOL16      WINAPI FindNextFile16(HANDLE16,LPWIN32_FIND_DATAA);
240 HRSRC16     WINAPI FindResource16(HINSTANCE16,LPCSTR,LPCSTR);
241 BOOL16      WINAPI FreeModule16(HMODULE16);
242 void        WINAPI FreeProcInstance16(FARPROC16);
243 BOOL16      WINAPI FreeResource16(HGLOBAL16);
244 UINT16      WINAPI GetAtomName16(ATOM,LPSTR,INT16);
245 UINT16      WINAPI GetCurrentDirectory16(UINT16,LPSTR);
246 BOOL16      WINAPI GetDiskFreeSpace16(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
247 UINT16      WINAPI GetDriveType16(UINT16); /* yes, the arguments differ */
248 INT16       WINAPI GetLocaleInfo16(LCID,LCTYPE,LPSTR,INT16);
249 DWORD       WINAPI GetFileAttributes16(LPCSTR);
250 DWORD       WINAPI GetFreeSpace16(UINT16);
251 INT16       WINAPI GetModuleFileName16(HINSTANCE16,LPSTR,INT16);
252 HMODULE16   WINAPI GetModuleHandle16(LPCSTR);
253 UINT16      WINAPI GetPrivateProfileInt16(LPCSTR,LPCSTR,INT16,LPCSTR);
254 INT16       WINAPI GetPrivateProfileSection16(LPCSTR,LPSTR,UINT16,LPCSTR);
255 WORD        WINAPI GetPrivateProfileSectionNames16(LPSTR,UINT16,LPCSTR);
256 INT16       WINAPI GetPrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16,LPCSTR);
257 BOOL16      WINAPI GetPrivateProfileStruct16(LPCSTR,LPCSTR,LPVOID,UINT16,LPCSTR);
258 FARPROC16   WINAPI GetProcAddress16(HMODULE16,LPCSTR);
259 UINT16      WINAPI GetProfileInt16(LPCSTR,LPCSTR,INT16);
260 INT16       WINAPI GetProfileSection16(LPCSTR,LPSTR,UINT16);
261 WORD        WINAPI GetProfileSectionNames16(LPSTR,WORD);
262 INT16       WINAPI GetProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16);
263 DWORD       WINAPI GetSelectorBase(WORD);
264 BOOL16      WINAPI GetStringType16(LCID,DWORD,LPCSTR,INT16,LPWORD);
265 UINT16      WINAPI GetSystemDirectory16(LPSTR,UINT16);
266 UINT16      WINAPI GetTempFileName16(BYTE,LPCSTR,UINT16,LPSTR);
267 LONG        WINAPI GetVersion16(void);
268 BOOL16      WINAPI GetVersionEx16(OSVERSIONINFO16*);
269 BOOL16      WINAPI GetWinDebugInfo16(LPWINDEBUGINFO,UINT16);
270 UINT16      WINAPI GetWindowsDirectory16(LPSTR,UINT16);
271 HGLOBAL16   WINAPI GlobalAlloc16(UINT16,DWORD);
272 DWORD       WINAPI GlobalCompact16(DWORD);
273 LPVOID      WINAPI GlobalLock16(HGLOBAL16);
274 WORD        WINAPI GlobalFix16(HGLOBAL16);
275 UINT16      WINAPI GlobalFlags16(HGLOBAL16);
276 HGLOBAL16   WINAPI GlobalFree16(HGLOBAL16);
277 DWORD       WINAPI GlobalHandle16(WORD);
278 HGLOBAL16   WINAPI GlobalReAlloc16(HGLOBAL16,DWORD,UINT16);
279 DWORD       WINAPI GlobalSize16(HGLOBAL16);
280 VOID        WINAPI GlobalUnfix16(HGLOBAL16);
281 BOOL16      WINAPI GlobalUnlock16(HGLOBAL16);
282 BOOL16      WINAPI GlobalUnWire16(HGLOBAL16);
283 SEGPTR      WINAPI GlobalWire16(HGLOBAL16);
284 WORD        WINAPI InitAtomTable16(WORD);
285 BOOL16      WINAPI IsBadCodePtr16(SEGPTR);
286 BOOL16      WINAPI IsBadHugeReadPtr16(SEGPTR,DWORD);
287 BOOL16      WINAPI IsBadHugeWritePtr16(SEGPTR,DWORD);
288 BOOL16      WINAPI IsBadReadPtr16(SEGPTR,UINT16);
289 BOOL16      WINAPI IsBadStringPtr16(SEGPTR,UINT16);
290 BOOL16      WINAPI IsBadWritePtr16(SEGPTR,UINT16);
291 BOOL16      WINAPI IsDBCSLeadByte16(BYTE);
292 HINSTANCE16 WINAPI LoadLibrary16(LPCSTR);
293 HINSTANCE16 WINAPI LoadModule16(LPCSTR,LPVOID);
294 HGLOBAL16   WINAPI LoadResource16(HINSTANCE16,HRSRC16);
295 HLOCAL16    WINAPI LocalAlloc16(UINT16,WORD);
296 UINT16      WINAPI LocalCompact16(UINT16);
297 UINT16      WINAPI LocalFlags16(HLOCAL16);
298 HLOCAL16    WINAPI LocalFree16(HLOCAL16);
299 HLOCAL16    WINAPI LocalHandle16(WORD);
300 SEGPTR      WINAPI LocalLock16(HLOCAL16);
301 HLOCAL16    WINAPI LocalReAlloc16(HLOCAL16,WORD,UINT16);
302 UINT16      WINAPI LocalShrink16(HGLOBAL16,UINT16);
303 UINT16      WINAPI LocalSize16(HLOCAL16);
304 BOOL16      WINAPI LocalUnlock16(HLOCAL16);
305 LPVOID      WINAPI LockResource16(HGLOBAL16);
306 HGLOBAL16   WINAPI LockSegment16(HGLOBAL16);
307 FARPROC16   WINAPI MakeProcInstance16(FARPROC16,HANDLE16);
308 HFILE16     WINAPI OpenFile16(LPCSTR,OFSTRUCT*,UINT16);
309 DWORD       WINAPI RegCloseKey16(HKEY);
310 DWORD       WINAPI RegCreateKey16(HKEY,LPCSTR,LPHKEY);
311 DWORD       WINAPI RegDeleteKey16(HKEY,LPCSTR);
312 DWORD       WINAPI RegDeleteValue16(HKEY,LPSTR);
313 DWORD       WINAPI RegEnumKey16(HKEY,DWORD,LPSTR,DWORD);
314 DWORD       WINAPI RegEnumValue16(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
315 DWORD       WINAPI RegOpenKey16(HKEY,LPCSTR,LPHKEY);
316 DWORD       WINAPI RegQueryValue16(HKEY,LPCSTR,LPSTR,LPDWORD);
317 DWORD       WINAPI RegQueryValueEx16(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
318 DWORD       WINAPI RegSetValue16(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
319 DWORD       WINAPI RegSetValueEx16(HKEY,LPCSTR,DWORD,DWORD,CONST BYTE*,DWORD);
320 BOOL16      WINAPI RemoveDirectory16(LPCSTR);
321 BOOL16      WINAPI SetCurrentDirectory16(LPCSTR);
322 UINT16      WINAPI SetErrorMode16(UINT16);
323 BOOL16      WINAPI SetFileAttributes16(LPCSTR,DWORD);
324 UINT16      WINAPI SetHandleCount16(UINT16);
325 WORD        WINAPI SetSelectorBase(WORD,DWORD);
326 LONG        WINAPI SetSwapAreaSize16(WORD);
327 BOOL16      WINAPI SetWinDebugInfo16(LPWINDEBUGINFO);
328 DWORD       WINAPI SizeofResource16(HMODULE16,HRSRC16);
329 void        WINAPI UnlockSegment16(HGLOBAL16);
330 BOOL16      WINAPI WritePrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
331 BOOL16      WINAPI WriteProfileString16(LPCSTR,LPCSTR,LPCSTR);
332 /* Yield16 will only be available from kernel module, use K32WOWYield instead */
333 VOID        WINAPI Yield16(void);
334 VOID        WINAPI K32WOWYield16(void);
335 SEGPTR      WINAPI lstrcat16(SEGPTR,LPCSTR);
336 SEGPTR      WINAPI lstrcatn16(SEGPTR,LPCSTR,INT16);
337 SEGPTR      WINAPI lstrcpy16(SEGPTR,LPCSTR);
338 SEGPTR      WINAPI lstrcpyn16(SEGPTR,LPCSTR,INT16);
339 INT16       WINAPI lstrlen16(LPCSTR);
340 HINSTANCE16 WINAPI WinExec16(LPCSTR,UINT16);
341 LONG        WINAPI _hread16(HFILE16,LPVOID,LONG);
342 LONG        WINAPI _hwrite16(HFILE16,LPCSTR,LONG);
343 HFILE16     WINAPI _lcreat16(LPCSTR,INT16);
344 HFILE16     WINAPI _lclose16(HFILE16);
345 LONG        WINAPI _llseek16(HFILE16,LONG,INT16);
346 HFILE16     WINAPI _lopen16(LPCSTR,INT16);
347 UINT16      WINAPI _lread16(HFILE16,LPVOID,UINT16);
348 UINT16      WINAPI _lwrite16(HFILE16,LPCSTR,UINT16);
349 BOOL16      WINAPI WritePrivateProfileSection16(LPCSTR,LPCSTR,LPCSTR);
350 BOOL16      WINAPI WritePrivateProfileStruct16(LPCSTR,LPCSTR,LPVOID,UINT16,LPCSTR);
351 BOOL16      WINAPI WriteProfileSection16(LPCSTR,LPCSTR);
352
353 /* Wine-specific functions */
354 WORD        WINAPI wine_call_to_16_word( FARPROC16 target, INT nArgs );
355 LONG        WINAPI wine_call_to_16_long( FARPROC16 target, INT nArgs );
356 void        WINAPI wine_call_to_16_regs_short( CONTEXT86 *context, INT nArgs );
357 void        WINAPI wine_call_to_16_regs_long ( CONTEXT86 *context, INT nArgs );
358
359 /* Some optimizations */
360 extern inline LPVOID WINAPI MapSL( SEGPTR segptr )
361 {
362     return (char *)wine_ldt_copy.base[SELECTOROF(segptr) >> __AHSHIFT] + OFFSETOF(segptr);
363 }
364
365 #endif /* __WINE_WINE_WINBASE16_H */