Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
4.3 KiB

  1. /*++
  2. *
  3. * WOW v1.0
  4. *
  5. * Copyright (c) 1991, Microsoft Corporation
  6. *
  7. * WDDE.H
  8. * WOW32 DDE worker routines.
  9. *
  10. * History:
  11. * WOW DDE support designed and developed by ChandanC
  12. *
  13. --*/
  14. #include "wowclip.h"
  15. typedef struct _DDENODE {
  16. HAND16 Initiator;
  17. struct _DDENODE *Next;
  18. } DDENODE, *LPDDENODE;
  19. /* DDE h16 and h32 object alias structure
  20. */
  21. typedef struct _HDDE {
  22. struct _HDDE *pDDENext; // pointer to next hDDE alias
  23. HAND16 To_hwnd; // window that will receive this message
  24. HAND16 From_hwnd; // window that sent this message
  25. HAND16 hMem16; // handle of WOW app allocated 16 bit object
  26. HANDLE hMem32; // handle of WOW allocated 32 bit object
  27. WORD DdeMsg; // message id
  28. WORD DdeFormat; // message format
  29. WORD DdeFlags; // indicates if it is metafile handle
  30. HAND16 h16; // original h16 for bad apps doing EXECUTE
  31. } HDDE, *PHDDE;
  32. typedef struct _DDEINFO {
  33. WORD Msg; // message id
  34. WORD Format; // message format
  35. WORD Flags; // indicates if it is metafile handle
  36. HAND16 h16; // original h16 for bad apps doing EXECUTE
  37. } DDEINFO, *PDDEINFO;
  38. typedef struct _CPDATA {
  39. struct _CPDATA *Next; // pointer to next CopyData alias
  40. HAND16 To_hwnd; // window that will receive this message
  41. HAND16 From_hwnd; // window that sent this message
  42. DWORD Mem16; // handle of allocated 16 bit object
  43. DWORD Mem32; // handle of allocated 32 bit object
  44. DWORD Flags; // No real structure is complete without flags
  45. } CPDATA, *PCPDATA;
  46. // This is used by GetMessage to thunk a 32 bit message to the 16 bit
  47. // message.
  48. #define FREEDDEML 0x0001
  49. #define DDE_EXECUTE_FREE_H16 0x0001
  50. #define DDE_EXECUTE_FREE_MEM 0x0002
  51. #define DDE_METAFILE 0x0004
  52. #define DDE_PACKET 0x0008
  53. // This flag is used when a 16 bit app sends data using WM_COPYDATA message
  54. //
  55. #define COPYDATA_16 0x0001
  56. /*----------------------------------------------------------------------------
  57. | DDEDATA structure
  58. |
  59. | WM_DDE_DATA parameter structure for hData (LOWORD(lParam)).
  60. | The actual size of this structure depends on the size of
  61. | the Value array.
  62. |
  63. ----------------------------------------------------------------------------*/
  64. typedef struct {
  65. unsigned short wStatus;
  66. short cfFormat;
  67. HAND16 Value;
  68. } DDEDATA16;
  69. typedef struct {
  70. unsigned short wStatus;
  71. short cfFormat;
  72. HANDLE Value;
  73. } DDEDATA32;
  74. VOID WI32DDEAddInitiator (HAND16 Initiator);
  75. VOID WI32DDEDeleteInitiator(HAND16 Initiator);
  76. BOOL WI32DDEInitiate(HAND16 Initiator);
  77. BOOL DDEDeletehandle(HAND16 h16, HANDLE h32);
  78. HANDLE DDEFind32(HAND16 h16);
  79. HAND16 DDEFind16(HANDLE h32);
  80. BOOL DDEAddhandle(HAND16 To_hwnd, HAND16 From_hwnd, HAND16 hMem16, HANDLE hMem32, PDDEINFO pDdeInfo);
  81. HAND16 DDECopyhData16(HAND16 To_hwnd, HAND16 From_hwnd, HANDLE h32, PDDEINFO pDdeInfo);
  82. HANDLE DDECopyhData32(HAND16 To_hwnd, HAND16 From_hwnd, HAND16 h16, PDDEINFO pDdeInfo);
  83. VOID W32MarkDDEHandle (HAND16 hMem16);
  84. VOID W32UnMarkDDEHandle (HAND16 hMem16);
  85. HANDLE DDEFindPair32(HAND16 To_hwnd, HAND16 From_hwnd, HAND16 hMem16);
  86. HAND16 DDEFindPair16(HAND16 To_hwnd, HAND16 From_hwnd, HANDLE hMem32);
  87. BOOL W32DDEFreeGlobalMem32 (HANDLE h32);
  88. ULONG FASTCALL WK32WowDdeFreeHandle (PVDMFRAME pFrame);
  89. BOOL W32DdeFreeHandle16 (HAND16 h16);
  90. PHDDE DDEFindNode16 (HAND16 h16);
  91. PHDDE DDEFindNode32 (HANDLE h32);
  92. PHDDE DDEFindAckNode (HAND16 To_hwnd, HAND16 From_hwnd, HANDLE hMem32);
  93. BOOL CopyDataAddNode (HAND16 To_hwnd, HAND16 From_hwnd, DWORD Mem16, DWORD Mem32, DWORD Flags);
  94. VPVOID CopyDataFindData16 (HWND16 To_hwnd, HWND16 From_hwnd, DWORD Mem);
  95. PCPDATA CopyDataFindData32 (HWND16 To_hwnd, HWND16 From_hwnd, DWORD Mem);
  96. BOOL CopyDataDeleteNode (HWND16 To_hwnd, HWND16 From_hwnd, DWORD Mem);
  97. BOOL DDEIsTargetMSDraw(HAND16 To_hwnd);
  98. HAND16 Copyh32Toh16 (int cb, LPBYTE lpMem32);
  99. HANDLE Copyh16Toh32 (int cb, LPBYTE lpMem16);
  100. VOID FixMetafile32To16 (LPMETAFILEPICT lpMemMeta32, LPMETAFILEPICT16 lpMemMeta16);