1 #ifndef __WINE_WINE_WINBASE16_H
2 #define __WINE_WINE_WINBASE16_H
7 #include "wine/windef16.h"
8 #include "wine/library.h"
11 typedef struct _SEGINFO
{
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 */
41 /* Parameters for LoadModule() */
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
;
52 #define INVALID_HANDLE_VALUE16 ((HANDLE16) -1)
53 #define INFINITE16 0xFFFF
56 DWORD dwOSVersionInfoSize
;
61 CHAR szCSDVersion
[128];
66 * NE Header FORMAT FLAGS
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
81 * NE Header OPERATING SYSTEM
83 #define NE_OSFLAGS_UNKNOWN 0x01
84 #define NE_OSFLAGS_WINDOWS 0x04
87 * NE Header ADDITIONAL FLAGS
89 #define NE_AFLAGS_WIN2_PROTMODE 0x02
90 #define NE_AFLAGS_WIN2_PROFONTS 0x04
91 #define NE_AFLAGS_FASTLOAD 0x08
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
111 * Resource table structures.
125 WORD type_id
; /* Type identifier */
126 WORD count
; /* Number of resources of this type */
127 FARPROC16 resloader
; /* SetResourceHandler() */
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
147 #define __AHSHIFT 3 /* don't change! */
148 #define __AHINCR (1 << __AHSHIFT)
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);
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
);
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
);
359 /* Some optimizations */
360 extern inline LPVOID WINAPI
MapSL( SEGPTR segptr
)
362 return (char *)wine_ldt_copy
.base
[SELECTOROF(segptr
) >> __AHSHIFT
] + OFFSETOF(segptr
);
365 #endif /* __WINE_WINE_WINBASE16_H */