summaryrefslogtreecommitdiffstats
path: root/private/ole32/olethunk/h/wow32fn.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/ole32/olethunk/h/wow32fn.h')
-rw-r--r--private/ole32/olethunk/h/wow32fn.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/private/ole32/olethunk/h/wow32fn.h b/private/ole32/olethunk/h/wow32fn.h
new file mode 100644
index 000000000..287ca8f2f
--- /dev/null
+++ b/private/ole32/olethunk/h/wow32fn.h
@@ -0,0 +1,92 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: wow32fn.h
+//
+// Contents: WOW 32-bit private function declarations
+//
+// History: 18-Feb-94 DrewB Created
+//
+//----------------------------------------------------------------------------
+
+#ifndef __WOW32FN_H__
+#define __WOW32FN_H__
+
+//
+// WOW types
+//
+
+// 'V'DM pointers
+typedef DWORD VPVOID;
+typedef DWORD VPSTR;
+
+typedef HANDLE HAND32;
+typedef WORD HAND16;
+
+typedef HAND16 HMEM16;
+typedef HAND16 HWND16;
+typedef HAND16 HDC16;
+typedef HAND16 HRGN16;
+typedef HAND16 HMENU16;
+typedef HAND16 HICON16;
+typedef HAND16 HBITMAP16;
+typedef HAND16 HACCEL16;
+typedef HAND16 HTASK16;
+typedef HAND16 HMETAFILE16;
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+// Macros to handle conversion of 16:16 pointers to 0:32 pointers
+// On NT this mapping is guaranteed to stay stable in a WOW process
+// as long as a 32->16 transition doesn't occur
+//
+// On Chicago 32-bit code can be preempted at any time so selectors
+// must be fixed to protect them from being remapped
+
+#if defined(_CHICAGO_)
+
+#define WOWFIXVDMPTR(vp, cb) WOWGetVDMPointerFix(vp, cb, TRUE)
+#define WOWRELVDMPTR(vp) WOWGetVDMPointerUnfix(vp)
+
+#else
+
+#define WOWFIXVDMPTR(vp, cb) WOWGetVDMPointer(vp, cb, TRUE)
+#define WOWRELVDMPTR(vp) (vp)
+
+#endif
+
+#define FIXVDMPTR(vp, type) \
+ (type UNALIGNED *)WOWFIXVDMPTR(vp, sizeof(type))
+#define RELVDMPTR(vp) \
+ WOWRELVDMPTR(vp)
+
+#if !defined(_CHICAGO_)
+
+HAND16 CopyDropFilesFrom32(HANDLE h32);
+HANDLE CopyDropFilesFrom16(HAND16 h16);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+// 16-bit HGLOBAL tracking functions
+#if DBG == 1
+VPVOID WgtAllocLock(WORD wFlags, DWORD cb, HMEM16 *ph);
+void WgtUnlockFree(VPVOID vpv);
+void WgtDump(void);
+#else
+#define WgtAllocLock(wFlags, cb, ph) \
+ WOWGlobalAllocLock16(wFlags, cb, ph)
+#define WgtUnlockFree(vpv) \
+ WOWGlobalUnlockFree16(vpv)
+#define WgtDump()
+#endif
+
+#endif // #ifndef __WOW32FN_H__