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