93 lines
2 KiB
C
93 lines
2 KiB
C
//+---------------------------------------------------------------------------
|
|
//
|
|
// 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__
|