windows-nt/Source/XPSP1/NT/base/mvdm/wow32/wdde.h

122 lines
4.2 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
*
* WOW v1.0
*
* Copyright (c) 1991, Microsoft Corporation
*
* WDDE.H
* WOW32 DDE worker routines.
*
* History:
* WOW DDE support designed and developed by ChandanC
*
--*/
#include "wowclip.h"
typedef struct _DDENODE {
HAND16 Initiator;
struct _DDENODE *Next;
} DDENODE, *LPDDENODE;
/* DDE h16 and h32 object alias structure
*/
typedef struct _HDDE {
struct _HDDE *pDDENext; // pointer to next hDDE alias
HAND16 To_hwnd; // window that will receive this message
HAND16 From_hwnd; // window that sent this message
HAND16 hMem16; // handle of WOW app allocated 16 bit object
HANDLE hMem32; // handle of WOW allocated 32 bit object
WORD DdeMsg; // message id
WORD DdeFormat; // message format
WORD DdeFlags; // indicates if it is metafile handle
HAND16 h16; // original h16 for bad apps doing EXECUTE
} HDDE, *PHDDE;
typedef struct _DDEINFO {
WORD Msg; // message id
WORD Format; // message format
WORD Flags; // indicates if it is metafile handle
HAND16 h16; // original h16 for bad apps doing EXECUTE
} DDEINFO, *PDDEINFO;
typedef struct _CPDATA {
struct _CPDATA *Next; // pointer to next CopyData alias
HAND16 To_hwnd; // window that will receive this message
HAND16 From_hwnd; // window that sent this message
DWORD Mem16; // handle of allocated 16 bit object
DWORD Mem32; // handle of allocated 32 bit object
DWORD Flags; // No real structure is complete without flags
} CPDATA, *PCPDATA;
// This is used by GetMessage to thunk a 32 bit message to the 16 bit
// message.
#define FREEDDEML 0x0001
#define DDE_EXECUTE_FREE_H16 0x0001
#define DDE_EXECUTE_FREE_MEM 0x0002
#define DDE_METAFILE 0x0004
#define DDE_PACKET 0x0008
// This flag is used when a 16 bit app sends data using WM_COPYDATA message
//
#define COPYDATA_16 0x0001
/*----------------------------------------------------------------------------
| DDEDATA structure
|
| WM_DDE_DATA parameter structure for hData (LOWORD(lParam)).
| The actual size of this structure depends on the size of
| the Value array.
|
----------------------------------------------------------------------------*/
typedef struct {
unsigned short wStatus;
short cfFormat;
HAND16 Value;
} DDEDATA16;
typedef struct {
unsigned short wStatus;
short cfFormat;
HANDLE Value;
} DDEDATA32;
VOID WI32DDEAddInitiator (HAND16 Initiator);
VOID WI32DDEDeleteInitiator(HAND16 Initiator);
BOOL WI32DDEInitiate(HAND16 Initiator);
BOOL DDEDeletehandle(HAND16 h16, HANDLE h32);
HANDLE DDEFind32(HAND16 h16);
HAND16 DDEFind16(HANDLE h32);
BOOL DDEAddhandle(HAND16 To_hwnd, HAND16 From_hwnd, HAND16 hMem16, HANDLE hMem32, PDDEINFO pDdeInfo);
HAND16 DDECopyhData16(HAND16 To_hwnd, HAND16 From_hwnd, HANDLE h32, PDDEINFO pDdeInfo);
HANDLE DDECopyhData32(HAND16 To_hwnd, HAND16 From_hwnd, HAND16 h16, PDDEINFO pDdeInfo);
VOID W32MarkDDEHandle (HAND16 hMem16);
VOID W32UnMarkDDEHandle (HAND16 hMem16);
HANDLE DDEFindPair32(HAND16 To_hwnd, HAND16 From_hwnd, HAND16 hMem16);
HAND16 DDEFindPair16(HAND16 To_hwnd, HAND16 From_hwnd, HANDLE hMem32);
BOOL W32DDEFreeGlobalMem32 (HANDLE h32);
ULONG FASTCALL WK32WowDdeFreeHandle (PVDMFRAME pFrame);
BOOL W32DdeFreeHandle16 (HAND16 h16);
PHDDE DDEFindNode16 (HAND16 h16);
PHDDE DDEFindNode32 (HANDLE h32);
PHDDE DDEFindAckNode (HAND16 To_hwnd, HAND16 From_hwnd, HANDLE hMem32);
BOOL CopyDataAddNode (HAND16 To_hwnd, HAND16 From_hwnd, DWORD Mem16, DWORD Mem32, DWORD Flags);
VPVOID CopyDataFindData16 (HWND16 To_hwnd, HWND16 From_hwnd, DWORD Mem);
PCPDATA CopyDataFindData32 (HWND16 To_hwnd, HWND16 From_hwnd, DWORD Mem);
BOOL CopyDataDeleteNode (HWND16 To_hwnd, HWND16 From_hwnd, DWORD Mem);
BOOL DDEIsTargetMSDraw(HAND16 To_hwnd);
HAND16 Copyh32Toh16 (int cb, LPBYTE lpMem32);
HANDLE Copyh16Toh32 (int cb, LPBYTE lpMem16);
VOID FixMetafile32To16 (LPMETAFILEPICT lpMemMeta32, LPMETAFILEPICT16 lpMemMeta16);