Release 991031.
[wine] / include / wownt32.h
1 /*
2  * WOW Generic Thunk API 
3  */
4
5 #ifndef _WOWNT32_H_
6 #define _WOWNT32_H_
7
8 LPVOID WINAPI WOWGetVDMPointer(DWORD,DWORD,BOOL);
9 LPVOID WINAPI WOWGetVDMPointerFix(DWORD,DWORD,BOOL);
10 VOID   WINAPI WOWGetVDMPointerUnfix(DWORD);
11
12 WORD   WINAPI WOWGlobalAlloc16(WORD,DWORD);
13 WORD   WINAPI WOWGlobalFree16(WORD);
14 DWORD  WINAPI WOWGlobalLock16(WORD);
15 BOOL   WINAPI WOWGlobalUnlock16(WORD);
16 DWORD  WINAPI WOWGlobalAllocLock16(WORD,DWORD,WORD *);
17 WORD   WINAPI WOWGlobalUnlockFree16(DWORD);
18 DWORD  WINAPI WOWGlobalLockSize16(WORD,PDWORD);
19
20 VOID   WINAPI WOWYield16(VOID);
21 VOID   WINAPI WOWDirectedYield16(WORD);
22
23 typedef enum
24 {
25     WOW_TYPE_HWND,
26     WOW_TYPE_HMENU,
27     WOW_TYPE_HDWP,
28     WOW_TYPE_HDROP,
29     WOW_TYPE_HDC,
30     WOW_TYPE_HFONT,
31     WOW_TYPE_HMETAFILE,
32     WOW_TYPE_HRGN,
33     WOW_TYPE_HBITMAP,
34     WOW_TYPE_HBRUSH,
35     WOW_TYPE_HPALETTE,
36     WOW_TYPE_HPEN,
37     WOW_TYPE_HACCEL,
38     WOW_TYPE_HTASK,
39     WOW_TYPE_FULLHWND
40
41 } WOW_HANDLE_TYPE;
42
43 HANDLE WINAPI WOWHandle32(WORD,WOW_HANDLE_TYPE);
44 WORD   WINAPI WOWHandle16(HANDLE,WOW_HANDLE_TYPE);
45
46 #define HWND_32(h16)      ((HWND)      (WOWHandle32(h16, WOW_TYPE_HWND)))
47 #define HMENU_32(h16)     ((HMENU)     (WOWHandle32(h16, WOW_TYPE_HMENU)))
48 #define HDWP_32(h16)      ((HDWP)      (WOWHandle32(h16, WOW_TYPE_HDWP)))
49 #define HDROP_32(h16)     ((HDROP)     (WOWHandle32(h16, WOW_TYPE_HDROP)))
50 #define HDC_32(h16)       ((HDC)       (WOWHandle32(h16, WOW_TYPE_HDC)))
51 #define HFONT_32(h16)     ((HFONT)     (WOWHandle32(h16, WOW_TYPE_HFONT)))
52 #define HMETAFILE_32(h16) ((HMETAFILE) (WOWHandle32(h16, WOW_TYPE_HMETAFILE)))
53 #define HRGN_32(h16)      ((HRGN)      (WOWHandle32(h16, WOW_TYPE_HRGN)))
54 #define HBITMAP_32(h16)   ((HBITMAP)   (WOWHandle32(h16, WOW_TYPE_HBITMAP)))
55 #define HBRUSH_32(h16)    ((HBRUSH)    (WOWHandle32(h16, WOW_TYPE_HBRUSH)))
56 #define HPALETTE_32(h16)  ((HPALETTE)  (WOWHandle32(h16, WOW_TYPE_HPALETTE)))
57 #define HPEN_32(h16)      ((HPEN)      (WOWHandle32(h16, WOW_TYPE_HPEN)))
58 #define HACCEL_32(h16)    ((HACCEL)    (WOWHandle32(h16, WOW_TYPE_HACCEL)))
59 #define HTASK_32(h16)     ((DWORD)     (WOWHandle32(h16, WOW_TYPE_HTASK)))
60 #define FULLHWND_32(h16)  ((HWND)      (WOWHandle32(h16, WOW_TYPE_FULLHWND)))
61
62 #define HWND_16(h32)      (WOWHandle16(h32, WOW_TYPE_HWND))
63 #define HMENU_16(h32)     (WOWHandle16(h32, WOW_TYPE_HMENU))
64 #define HDWP_16(h32)      (WOWHandle16(h32, WOW_TYPE_HDWP))
65 #define HDROP_16(h32)     (WOWHandle16(h32, WOW_TYPE_HDROP))
66 #define HDC_16(h32)       (WOWHandle16(h32, WOW_TYPE_HDC))
67 #define HFONT_16(h32)     (WOWHandle16(h32, WOW_TYPE_HFONT))
68 #define HMETAFILE_16(h32) (WOWHandle16(h32, WOW_TYPE_HMETAFILE))
69 #define HRGN_16(h32)      (WOWHandle16(h32, WOW_TYPE_HRGN))
70 #define HBITMAP_16(h32)   (WOWHandle16(h32, WOW_TYPE_HBITMAP))
71 #define HBRUSH_16(h32)    (WOWHandle16(h32, WOW_TYPE_HBRUSH))
72 #define HPALETTE_16(h32)  (WOWHandle16(h32, WOW_TYPE_HPALETTE))
73 #define HPEN_16(h32)      (WOWHandle16(h32, WOW_TYPE_HPEN))
74 #define HACCEL_16(h32)    (WOWHandle16(h32, WOW_TYPE_HACCEL))
75 #define HTASK_16(h32)     (WOWHandle16(h32, WOW_TYPE_HTASK))
76
77
78 #define WCB16_PASCAL     0
79 #define WCB16_CDECL      1
80 #define WCB16_MAX_CBARGS 16
81
82 DWORD WINAPI WOWCallback16(DWORD,DWORD);
83 BOOL  WINAPI WOWCallback16Ex(DWORD,DWORD,DWORD,LPVOID,LPDWORD);
84
85
86 #ifdef __WINE__
87 /*
88  * These are the 16-bit side WOW routines.  They reside in wownt16.h 
89  * in the SDK; since we don't support Win16 source code anyway, I've 
90  * placed them here for compilation with Wine ...
91  */
92
93 DWORD WINAPI GetVDMPointer32W16(SEGPTR,UINT16);
94
95 DWORD WINAPI LoadLibraryEx32W16(LPCSTR,DWORD,DWORD);
96 DWORD WINAPI GetProcAddress32W16(DWORD,LPCSTR);
97 DWORD WINAPI FreeLibrary32W16(DWORD);
98
99 #define CPEX_DEST_STDCALL   0x00000000L
100 #define CPEX_DEST_CDECL     0x80000000L
101
102 DWORD WINAPI CallProcExW16(VOID);
103 DWORD WINAPI CallProcEx32W16(VOID);
104
105 #endif /* __WINE__ */
106
107
108 #endif /* _WOWNT32_H_ */
109
110