home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / sdk / winh / wtypes.idl < prev    next >
Encoding:
Text File  |  1995-07-11  |  20.2 KB  |  730 lines

  1. //+-------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1992 - 1995.
  5. //
  6. //  File: wtypes.idl
  7. //
  8. //  Contents: This interface definition contains typedefs for remotable
  9. //            data types.
  10. //
  11. //--------------------------------------------------------------------------
  12.  
  13. [ uuid(D3980A60-910C-1068-9341-00DD010F2F1C),
  14.   version(0.1), pointer_default(unique) ]
  15.  
  16. interface IWinTypes
  17. {
  18.  
  19. cpp_quote("//+-------------------------------------------------------------------------")
  20. cpp_quote("//")
  21. cpp_quote("//  Microsoft Windows")
  22. cpp_quote("//  Copyright (C) Microsoft Corporation, 1992 - 1995.")
  23. cpp_quote("//")
  24. cpp_quote("//--------------------------------------------------------------------------")
  25.  
  26. typedef struct tagRemHGLOBAL
  27. {
  28.         long fNullHGlobal;
  29.         unsigned long cbData;
  30.         [size_is(cbData)] byte data[];
  31. } RemHGLOBAL;
  32.  
  33. typedef struct tagRemHMETAFILEPICT
  34. {
  35.         long        mm;
  36.         long        xExt;
  37.         long        yExt;
  38.         unsigned long cbData;
  39.         [size_is(cbData)] byte data[];
  40. } RemHMETAFILEPICT;
  41.  
  42. typedef [transmit_as(RemHMETAFILEPICT)] void * HMETAFILEPICT;
  43.  
  44. typedef struct tagRemHENHMETAFILE
  45. {
  46.         unsigned long cbData;
  47.         [size_is(cbData)] byte data[];
  48. } RemHENHMETAFILE;
  49.  
  50. typedef struct tagRemHBITMAP
  51. {
  52.         unsigned long cbData;
  53.         [size_is(cbData)] byte data[];
  54. } RemHBITMAP;
  55.  
  56. typedef struct tagRemHPALETTE
  57. {
  58.         unsigned long cbData;
  59.         [size_is(cbData)] byte data[];
  60. } RemHPALETTE;
  61.  
  62. typedef struct tagRemBRUSH
  63. {
  64.         unsigned long cbData;
  65.         [size_is(cbData)] byte data[];
  66. } RemHBRUSH;
  67.  
  68.  
  69. cpp_quote("#ifndef _WIN32           // The following code is for Win16 only")
  70. cpp_quote("#ifndef WINAPI          // If not included with 3.1 headers... ")
  71.  
  72. cpp_quote("#define FAR             _far")
  73. cpp_quote("#define PASCAL          _pascal")
  74. cpp_quote("#define CDECL           _cdecl")
  75.  
  76. cpp_quote("#define VOID            void")
  77. cpp_quote("#define WINAPI      FAR PASCAL")
  78. cpp_quote("#define CALLBACK    FAR PASCAL")
  79.  
  80.  
  81.  
  82. cpp_quote("#ifndef FALSE")
  83. cpp_quote("#define FALSE 0")
  84. cpp_quote("#define TRUE 1")
  85. cpp_quote("#endif // !FALSE")
  86.  
  87. cpp_quote("#ifndef _BYTE_DEFINED")
  88. cpp_quote("#define _BYTE_DEFINED")
  89. typedef unsigned char BYTE;
  90. cpp_quote("#endif // !_BYTE_DEFINED")
  91.  
  92. cpp_quote("#ifndef _WORD_DEFINED")
  93. cpp_quote("#define _WORD_DEFINED")
  94. typedef unsigned short WORD;
  95. cpp_quote("#endif // !_WORD_DEFINED")
  96.  
  97. typedef [transmit_as(unsigned long)] unsigned int UINT;
  98. typedef [transmit_as(long)] int INT;
  99. typedef long BOOL;
  100.  
  101. cpp_quote("#ifndef _LONG_DEFINED")
  102. cpp_quote("#define _LONG_DEFINED")
  103. typedef long LONG;
  104. cpp_quote("#endif // !_LONG_DEFINED")
  105.  
  106. cpp_quote("#ifndef _WPARAM_DEFINED")
  107. cpp_quote("#define _WPARAM_DEFINED")
  108. typedef UINT WPARAM;
  109. cpp_quote("#endif // _WPARAM_DEFINED")
  110.  
  111. cpp_quote("#ifndef _DWORD_DEFINED")
  112. cpp_quote("#define _DWORD_DEFINED")
  113. typedef unsigned long DWORD;
  114. cpp_quote("#endif // !_DWORD_DEFINED")
  115.  
  116. cpp_quote("#ifndef _LPARAM_DEFINED")
  117. cpp_quote("#define _LPARAM_DEFINED")
  118. typedef LONG LPARAM;//BUGBUG: this should be a discriminated union.
  119. cpp_quote("#endif // !_LPARAM_DEFINED")
  120.  
  121. cpp_quote("#ifndef _LRESULT_DEFINED")
  122. cpp_quote("#define _LRESULT_DEFINED")
  123. typedef LONG LRESULT;
  124. cpp_quote("#endif // !_LRESULT_DEFINED")
  125.  
  126. typedef [transmit_as(long)] void *HANDLE;
  127.  
  128. #define DECLARE_HANDLE(name)    typedef [transmit_as(long)] void * name
  129.  
  130. DECLARE_HANDLE(HMODULE);
  131. DECLARE_HANDLE(HINSTANCE);
  132. DECLARE_HANDLE(HICON);
  133. DECLARE_HANDLE(HFONT);
  134. typedef [transmit_as(RemHGLOBAL)] void * HGLOBAL;
  135. typedef HGLOBAL HLOCAL;
  136. typedef [transmit_as(RemHBITMAP)] void * HBITMAP;
  137. typedef [transmit_as(RemHPALETTE)] void * HPALETTE;
  138. typedef [transmit_as(RemHBRUSH)] void * HBRUSH;
  139. typedef [transmit_as(RemHENHMETAFILE)] void * HENHMETAFILE;
  140. DECLARE_HANDLE(HDC);
  141. DECLARE_HANDLE(HRGN);
  142. DECLARE_HANDLE(HWND);
  143. DECLARE_HANDLE(HMENU);
  144. DECLARE_HANDLE(HACCEL);
  145. DECLARE_HANDLE(HTASK);
  146. DECLARE_HANDLE(HKEY);
  147.  
  148. DECLARE_HANDLE(HDESK);
  149. /* DECLARE_HANDLE(HENHMETAFILE); */
  150. DECLARE_HANDLE(HMF);
  151. DECLARE_HANDLE(HEMF);
  152. DECLARE_HANDLE(HMETAFILE);
  153. /* DECLARE_HANDLE(HPALETTE); */
  154. DECLARE_HANDLE(HPEN);
  155. DECLARE_HANDLE(HRSRC);
  156. DECLARE_HANDLE(HSTR);
  157. DECLARE_HANDLE(HWINSTA);
  158. DECLARE_HANDLE(HKL);
  159. DECLARE_HANDLE(HGDIOBJ);
  160.  
  161. typedef HANDLE HDWP;
  162.  
  163. cpp_quote("#ifndef _HFILE_DEFINED")
  164. cpp_quote("#define _HFILE_DEFINED")
  165. typedef INT HFILE;      /* Polymorphic with C runtime file handle type */
  166. cpp_quote("#endif // !_HFILE_DEFINED")
  167.  
  168.  
  169. cpp_quote("#ifndef _HCURSOR_DEFINED")
  170. cpp_quote("#define _HCURSOR_DEFINED")
  171. typedef HICON HCURSOR;      /* HICONs & HCURSORs are polymorphic */
  172. cpp_quote("#endif // !_HCURSOR_DEFINED")
  173.  
  174.  
  175.  
  176. cpp_quote("#ifndef _LPWORD_DEFINED")
  177. cpp_quote("#define _LPWORD_DEFINED")
  178. typedef WORD *LPWORD;
  179. cpp_quote("#endif // !_LPWORD_DEFINED")
  180.  
  181.  
  182. cpp_quote("#ifndef _LPDWORD_DEFINED")
  183. cpp_quote("#define _LPDWORD_DEFINED")
  184. typedef DWORD *LPDWORD;
  185. cpp_quote("#endif // !_LPDWORD_DEFINED")
  186.  
  187.  
  188. typedef [string] char *LPSTR;
  189.  
  190. typedef [string] const char *LPCSTR;
  191.  
  192.  
  193. cpp_quote("#ifndef _WCHAR_DEFINED")
  194. cpp_quote("#define _WCHAR_DEFINED")
  195. typedef wchar_t WCHAR;
  196. typedef WCHAR   TCHAR;
  197. cpp_quote("#endif // !_WCHAR_DEFINED")
  198.  
  199. typedef [string] WCHAR *LPWSTR;
  200.  
  201.  
  202. typedef [string] TCHAR *LPTSTR;
  203.  
  204. typedef [string] const WCHAR *LPCWSTR;
  205. typedef [string] const TCHAR *LPCTSTR;
  206.  
  207.  
  208. typedef struct tagPALETTEENTRY {
  209.     BYTE        peRed;
  210.     BYTE        peGreen;
  211.     BYTE        peBlue;
  212.     BYTE        peFlags;
  213. } PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
  214.  
  215. // Logical Palette
  216. cpp_quote("#if 0")
  217.  
  218.     typedef struct tagLOGPALETTE {
  219.         WORD        palVersion;
  220.         WORD        palNumEntries;
  221.         [size_is(palNumEntries)] PALETTEENTRY        palPalEntry[];
  222.     } LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
  223.  
  224. cpp_quote("#else")
  225. cpp_quote("typedef struct tagLOGPALETTE {")
  226. cpp_quote("    WORD        palVersion;")
  227. cpp_quote("    WORD        palNumEntries;")
  228. cpp_quote("    PALETTEENTRY        palPalEntry[1];")
  229. cpp_quote("} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;")
  230. cpp_quote("#endif")
  231.  
  232. cpp_quote("#ifndef _COLORREF_DEFINED")
  233. cpp_quote("#define _COLORREF_DEFINED")
  234. typedef DWORD COLORREF;
  235. cpp_quote("#endif // !_COLORREF_DEFINED")
  236.  
  237. cpp_quote("#ifndef _LPCOLORREF_DEFINED")
  238. cpp_quote("#define _LPCOLORREF_DEFINED")
  239. typedef DWORD *LPCOLORREF;
  240. cpp_quote("#endif // !_LPCOLORREF_DEFINED")
  241.  
  242.  
  243. typedef HANDLE *LPHANDLE;
  244.  
  245. //typedefs for remotable types from wingdi.h
  246.  
  247. typedef struct _RECTL
  248. {
  249.     LONG    left;
  250.     LONG    top;
  251.     LONG    right;
  252.     LONG    bottom;
  253. } RECTL, *PRECTL, *LPRECTL;
  254.  
  255.  
  256. typedef struct tagPOINT
  257. {
  258.     LONG  x;
  259.     LONG  y;
  260. } POINT, *PPOINT, *LPPOINT;
  261.  
  262. typedef struct _POINTL
  263. {
  264.     LONG  x;
  265.     LONG  y;
  266. } POINTL, *PPOINTL;
  267.  
  268.  
  269.  
  270. cpp_quote("#ifndef WIN16")
  271. typedef struct tagSIZE
  272. {
  273.     LONG        cx;
  274.     LONG        cy;
  275. } SIZE, *PSIZE, *LPSIZE;
  276. cpp_quote("#else // WIN16")
  277. cpp_quote("typedef struct tagSIZE")
  278. cpp_quote("{")
  279. cpp_quote("    INT cx;")
  280. cpp_quote("    INT cy;")
  281. cpp_quote("} SIZE, *PSIZE, *LPSIZE;")
  282. cpp_quote("#endif // WIN16")
  283.  
  284.  
  285. // Message structure
  286.  
  287. typedef struct tagMSG {
  288.     HWND        hwnd;
  289.     UINT        message;
  290.     WPARAM      wParam;
  291.     LPARAM      lParam;
  292.     DWORD       time;
  293.     POINT       pt;
  294. } MSG, *PMSG, *NPMSG, *LPMSG;
  295.  
  296.  
  297.  
  298. typedef struct tagSIZEL
  299. {
  300.     LONG cx;
  301.     LONG cy;
  302. } SIZEL, *PSIZEL, *LPSIZEL;
  303.  
  304.  
  305. cpp_quote("#endif  //WINAPI")
  306. cpp_quote("#endif  //!WIN32")
  307.  
  308. cpp_quote("#if defined(_WIN32) && !defined(OLE2ANSI)")
  309.  
  310. typedef WCHAR                   OLECHAR;
  311. typedef [string] OLECHAR       *LPOLESTR;
  312. typedef [string] const OLECHAR *LPCOLESTR;
  313. cpp_quote("#define OLESTR(str) L##str")
  314.  
  315. cpp_quote("#else")
  316.  
  317. cpp_quote("typedef char      OLECHAR;")
  318. cpp_quote("typedef LPSTR     LPOLESTR;")
  319. cpp_quote("typedef LPCSTR    LPCOLESTR;")
  320. cpp_quote("#define OLESTR(str) str")
  321.  
  322. cpp_quote("#endif")
  323.  
  324.  
  325.  
  326.  
  327.  
  328. // This block contains types that are normally defined by the nt sdk in WINDEF.H
  329. // but we need them here for definitions that follow in this file.  If WINDEF.H
  330. // hasn't been included then we need to define them now so that WTYPES.H
  331. // will compile.
  332. cpp_quote("#ifndef _WINDEF_")
  333. typedef const RECTL *LPCRECTL;
  334.  
  335. typedef void * PVOID, *LPVOID;
  336. typedef struct tagRECT
  337. {
  338.     LONG    left;
  339.     LONG    top;
  340.     LONG    right;
  341.     LONG    bottom;
  342. } RECT, *PRECT, *LPRECT;
  343. typedef const RECT *LPCRECT;
  344.  
  345. cpp_quote("#endif  //_WINDEF_")
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353. typedef unsigned char  UCHAR;
  354. typedef short SHORT;
  355. typedef unsigned short USHORT;
  356. typedef DWORD ULONG;
  357.  
  358. cpp_quote("#if 0")
  359. //
  360. // __int64 is only supported by 2.0 and later midl.
  361. // __midl is set by the 2.0 midl and not by 1.0 midl.
  362. //
  363.  
  364. #if (defined(__midl))
  365. typedef __int64 LONGLONG;
  366. typedef unsigned __int64 ULONGLONG;
  367. #else
  368. typedef double LONGLONG;
  369. typedef double ULONGLONG;
  370. #endif
  371.  
  372. typedef LONGLONG *PLONGLONG;
  373. typedef ULONGLONG *PULONGLONG;
  374.  
  375. typedef struct _LARGE_INTEGER {
  376.     LONGLONG QuadPart;
  377. } LARGE_INTEGER;
  378.  
  379. typedef LARGE_INTEGER *PLARGE_INTEGER;
  380.  
  381. typedef struct _ULARGE_INTEGER {
  382.     ULONGLONG QuadPart;
  383. } ULARGE_INTEGER;
  384.  
  385. cpp_quote("#endif // ")
  386.  
  387.  
  388. cpp_quote("#ifndef _WINBASE_")
  389.  
  390. cpp_quote("#ifndef _FILETIME_")
  391. cpp_quote("#define _FILETIME_")
  392. typedef struct _FILETIME
  393. {
  394.     DWORD dwLowDateTime;
  395.     DWORD dwHighDateTime;
  396. } FILETIME, *PFILETIME, *LPFILETIME;
  397. cpp_quote("#endif // !_FILETIME")
  398.  
  399. cpp_quote("#ifndef _SYSTEMTIME_")
  400. cpp_quote("#define _SYSTEMTIME_")
  401. typedef struct _SYSTEMTIME {
  402.     WORD wYear;
  403.     WORD wMonth;
  404.     WORD wDayOfWeek;
  405.     WORD wDay;
  406.     WORD wHour;
  407.     WORD wMinute;
  408.     WORD wSecond;
  409.     WORD wMilliseconds;
  410. } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
  411. cpp_quote("#endif // !_SYSTEMTIME")
  412.  
  413. cpp_quote("#ifndef _SECURITY_ATTRIBUTES_")
  414. cpp_quote("#define _SECURITY_ATTRIBUTES_")
  415. typedef struct _SECURITY_ATTRIBUTES {
  416.     DWORD nLength;
  417.     [size_is(nLength)] LPVOID lpSecurityDescriptor;
  418.     BOOL bInheritHandle;
  419. } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
  420. cpp_quote("#endif // !_SECURITY_ATTRIBUTES_")
  421.  
  422. cpp_quote("#ifndef SECURITY_DESCRIPTOR_REVISION")
  423.  
  424. typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
  425.  
  426. typedef PVOID PSID;     // winnt
  427.  
  428. typedef struct _ACL {
  429.     UCHAR AclRevision;
  430.     UCHAR Sbz1;
  431.     USHORT AclSize;
  432.     USHORT AceCount;
  433.     USHORT Sbz2;
  434. } ACL;
  435. typedef ACL *PACL;
  436.  
  437. typedef struct _SECURITY_DESCRIPTOR {
  438.     UCHAR Revision;
  439.     UCHAR Sbz1;
  440.     SECURITY_DESCRIPTOR_CONTROL Control;
  441.     PSID Owner;
  442.     PSID Group;
  443.     PACL Sacl;
  444.     PACL Dacl;
  445. } SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
  446.  
  447. cpp_quote("#endif // !SECURITY_DESCRIPTOR_REVISION")
  448.  
  449. cpp_quote("#endif //_WINBASE_")
  450.  
  451.  
  452. //
  453. // SCODE, HRESULT
  454. //
  455. //
  456. //  Status values are 32 bit values layed out as follows:
  457. //
  458. //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  459. //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  460. //  +-+-----------------------------+-------------------------------+
  461. //  |S|       Facility              |               Code            |
  462. //  +-+-----------------------------+-------------------------------+
  463. //
  464. //  where
  465. //
  466. //      S - is the severity code
  467. //
  468. //          0 - Success
  469. //          1 - Error
  470. //
  471. //
  472. //      Facility - is the facility code
  473. //
  474. //      Code - is the facility's status code
  475. //
  476. // SCODE and HRESULT are mktyplib base types.
  477. //
  478. typedef LONG SCODE;
  479. typedef LONG HRESULT;
  480.  
  481. typedef SCODE *PSCODE;
  482.  
  483.  
  484. cpp_quote("#ifndef GUID_DEFINED")
  485. cpp_quote("#define GUID_DEFINED")
  486. typedef struct _GUID
  487. {
  488.     DWORD Data1;
  489.     WORD  Data2;
  490.     WORD  Data3;
  491.     BYTE  Data4[8];
  492. } GUID;
  493. cpp_quote("#endif // !GUID_DEFINED")
  494.  
  495. cpp_quote("#if !defined( __LPGUID_DEFINED__ )")
  496. cpp_quote("#define __LPGUID_DEFINED__")
  497. typedef GUID *LPGUID;
  498. cpp_quote("#endif // !__LPGUID_DEFINED__")
  499.  
  500. cpp_quote("#ifndef __OBJECTID_DEFINED")
  501. cpp_quote("#define __OBJECTID_DEFINED")
  502. cpp_quote("#define _OBJECTID_DEFINED")
  503. typedef struct _OBJECTID     // NOTE!! Order of structure members is important for OFS
  504. {                            // enumeration.
  505.    GUID Lineage;             // Unique for objects copied from same original and copies of.
  506.    unsigned long Uniquifier; // Random, to provide uniqueness within small set with same
  507. } OBJECTID;                  // lineage id.
  508. cpp_quote("#endif // !_OBJECTID_DEFINED")
  509.  
  510.  
  511.  
  512.  
  513. cpp_quote("#if !defined( __IID_DEFINED__ )")
  514. cpp_quote("#define __IID_DEFINED__")
  515.  
  516. // Interface ID are just a kind of GUID
  517. typedef GUID IID;
  518. typedef IID *LPIID;
  519. cpp_quote("#define IID_NULL            GUID_NULL")
  520. cpp_quote("#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)")
  521.  
  522. // Class ID are just a kind of GUID
  523. typedef GUID CLSID;
  524. typedef              CLSID *LPCLSID;
  525. cpp_quote("#define CLSID_NULL          GUID_NULL")
  526. cpp_quote("#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)")
  527.  
  528. //The following typedefs are used internally by MIDL.
  529. cpp_quote("#if 0")
  530. #if defined(__midl)
  531.     /* MIDL 2.0 definitions */
  532.     typedef GUID *REFGUID;
  533.     typedef IID *REFIID;
  534.     typedef CLSID *REFCLSID;
  535. #else
  536.     /* MIDL 1.1 definitions */
  537.     typedef GUID REFGUID;
  538.     typedef IID REFIID;
  539.     typedef CLSID REFCLSID;
  540. #endif
  541. cpp_quote("#endif // 0")
  542.  
  543. cpp_quote("#if defined(__cplusplus)")
  544.  
  545. cpp_quote("#ifndef _REFGUID_DEFINED")
  546. cpp_quote("#define _REFGUID_DEFINED")
  547. cpp_quote("#define REFGUID             const GUID &")
  548. cpp_quote("#endif // !_REFGUID_DEFINED")
  549.  
  550. cpp_quote("#ifndef _REFIID_DEFINED")
  551. cpp_quote("#define _REFIID_DEFINED")
  552. cpp_quote("#define REFIID              const IID &")
  553. cpp_quote("#endif // !_REFIID_DEFINED")
  554.  
  555. cpp_quote("#ifndef _REFCLSID_DEFINED")
  556. cpp_quote("#define _REFCLSID_DEFINED")
  557. cpp_quote("#define REFCLSID            const CLSID &")
  558. cpp_quote("#endif // !_REFCLSID_DEFINED")
  559.  
  560.  
  561. cpp_quote("#else // !__cplusplus")
  562.  
  563. cpp_quote("#ifndef _REFGUID_DEFINED")
  564. cpp_quote("#define _REFGUID_DEFINED")
  565. cpp_quote("#define REFGUID             const GUID * const")
  566. cpp_quote("#endif // !_REFGUID_DEFINED")
  567.  
  568. cpp_quote("#ifndef _REFIID_DEFINED")
  569. cpp_quote("#define _REFIID_DEFINED")
  570. cpp_quote("#define REFIID              const IID * const")
  571. cpp_quote("#endif // !_REFIID_DEFINED")
  572.  
  573.  
  574. cpp_quote("#ifndef _REFCLSID_DEFINED")
  575. cpp_quote("#define _REFCLSID_DEFINED")
  576. cpp_quote("#define REFCLSID            const CLSID * const")
  577. cpp_quote("#endif // !_REFCLSID_DEFINED")
  578.  
  579. cpp_quote("#endif // !__cplusplus")
  580.  
  581. cpp_quote("#endif // !__IID_DEFINED__")
  582.  
  583.     /************************* Misc types ***********************************/
  584.  
  585.     // Common typdefs used in API paramaters, gleamed from compobj.h
  586.  
  587.     // memory context values; passed to CoGetMalloc
  588.     typedef enum tagMEMCTX
  589.     {
  590.         MEMCTX_TASK = 1,            // task (private) memory
  591.         MEMCTX_SHARED = 2,          // shared memory (between processes)
  592.         MEMCTX_MACSYSTEM = 3,       // on the mac, the system heap
  593.         // these are mostly for internal use...
  594.         MEMCTX_UNKNOWN = -1,        // unknown context (when asked about it)
  595.         MEMCTX_SAME = -2,           // same context (as some other pointer)
  596.     } MEMCTX;
  597.  
  598.  
  599. // For IRunningObjectTable::Register
  600. cpp_quote("#ifndef _ROTFLAGS_DEFINED")
  601. cpp_quote("#define _ROTFLAGS_DEFINED")
  602. cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 1")
  603. cpp_quote("#endif // !_ROTFLAGS_DEFINED")
  604.  
  605. // Maximum size of comparison buffer for IROTData::GetComparisonData
  606. cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED")
  607. cpp_quote("#define _ROT_COMPARE_MAX_DEFINED")
  608. cpp_quote("#define ROT_COMPARE_MAX 2048")
  609. cpp_quote("#endif // !_ROT_COMPARE_MAX_DEFINED")
  610.  
  611.  
  612.     // class context: used to determine what scope and kind of class object to use
  613.     // NOTE: this is a bitwise enum
  614.     typedef enum tagCLSCTX
  615.     {
  616.         CLSCTX_INPROC_SERVER = 1,   // server dll (runs in same process as caller)
  617.         CLSCTX_INPROC_HANDLER = 2,  // handler dll (runs in same process as caller)
  618.         CLSCTX_LOCAL_SERVER = 4,    // server exe (runs on same machine; diff proc)
  619.         CLSCTX_INPROC_SERVER16 = 8  // 16-bit server dll (runs in same process as caller)
  620.     } CLSCTX;
  621.  
  622.  
  623.     // marshaling flags; passed to CoMarshalInterface
  624.     typedef enum tagMSHLFLAGS
  625.     {
  626.         MSHLFLAGS_NORMAL = 0,       // normal marshaling via proxy/stub
  627.         MSHLFLAGS_TABLESTRONG = 1,  // keep object alive; must explicitly release
  628.         MSHLFLAGS_TABLEWEAK = 2     // doesn't hold object alive; still must release
  629.     } MSHLFLAGS;
  630.  
  631.     // marshal context: determines the destination context of the marshal operation
  632.     typedef enum tagMSHCTX
  633.     {
  634.         MSHCTX_LOCAL = 0,           // unmarshal context is local (eg.shared memory)
  635.         MSHCTX_NOSHAREDMEM = 1,     // unmarshal context has no shared memory access
  636.         MSHCTX_DIFFERENTMACHINE = 2,// unmarshal context is on a different machine
  637.         MSHCTX_INPROC = 3,          // unmarshal context is on different thread
  638.     } MSHCTX;
  639.  
  640.  
  641.  
  642.  
  643.     //
  644.     // Common typedefs for paramaters used in data view API's, gleamed
  645.     // from dvobj.h
  646.     //
  647.  
  648.     // Data/View aspect; specifies the desired aspect of the object when
  649.     // drawing or getting data.
  650.     typedef enum tagDVASPECT
  651.     {
  652.         DVASPECT_CONTENT = 1,
  653.         DVASPECT_THUMBNAIL = 2,
  654.         DVASPECT_ICON = 4,
  655.         DVASPECT_DOCPRINT = 8
  656.     } DVASPECT;
  657.  
  658.     /****** Storage types *************************************************/
  659.  
  660.  
  661.     /* Storage commit types */
  662.     typedef enum tagSTGC
  663.     {
  664.         STGC_DEFAULT        = 0,
  665.         STGC_OVERWRITE      = 1,
  666.         STGC_ONLYIFCURRENT  = 2,
  667.         STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
  668.     } STGC;
  669.  
  670.  
  671.  
  672.     typedef enum tagSTGMOVE
  673.     {
  674.         STGMOVE_MOVE    = 0,
  675.         STGMOVE_COPY    = 1
  676.     } STGMOVE;
  677.  
  678.     typedef enum tagSTATFLAG
  679.     {
  680.         STATFLAG_DEFAULT = 0,
  681.         STATFLAG_NONAME = 1
  682.     } STATFLAG;
  683.  
  684.  
  685. typedef [context_handle] void *HCONTEXT;
  686.  
  687. /****** Critical Section Wrappers ***********************************/
  688.  
  689.  
  690. /* if not already picked up from olenls.h */
  691. cpp_quote("#ifndef _LCID_DEFINED")
  692. cpp_quote("#define _LCID_DEFINED")
  693. typedef DWORD LCID;
  694. cpp_quote("#endif // !_LCID_DEFINED")
  695.  
  696.  
  697.  
  698.  
  699. cpp_quote("void __RPC_API HGLOBAL_to_xmit (HGLOBAL __RPC_FAR *, RemHGLOBAL __RPC_FAR * __RPC_FAR *);")
  700. cpp_quote("void __RPC_API HGLOBAL_from_xmit (RemHGLOBAL __RPC_FAR *, HGLOBAL __RPC_FAR *);")
  701. cpp_quote("void __RPC_API HGLOBAL_free_inst (HGLOBAL __RPC_FAR *);")
  702. cpp_quote("void __RPC_API HGLOBAL_free_xmit (RemHGLOBAL __RPC_FAR *);")
  703.  
  704. cpp_quote("void __RPC_API HBITMAP_to_xmit (HBITMAP __RPC_FAR *, RemHBITMAP __RPC_FAR * __RPC_FAR *);")
  705. cpp_quote("void __RPC_API HBITMAP_from_xmit (RemHBITMAP __RPC_FAR *, HBITMAP __RPC_FAR *);")
  706. cpp_quote("void __RPC_API HBITMAP_free_inst (HBITMAP __RPC_FAR *);")
  707. cpp_quote("void __RPC_API HBITMAP_free_xmit (RemHBITMAP __RPC_FAR *);")
  708.  
  709. cpp_quote("void __RPC_API HPALETTE_to_xmit (HPALETTE __RPC_FAR *, RemHPALETTE __RPC_FAR * __RPC_FAR *);")
  710. cpp_quote("void __RPC_API HPALETTE_from_xmit (RemHPALETTE __RPC_FAR *, HPALETTE __RPC_FAR *);")
  711. cpp_quote("void __RPC_API HPALETTE_free_inst (HPALETTE __RPC_FAR *);")
  712. cpp_quote("void __RPC_API HPALETTE_free_xmit (RemHPALETTE __RPC_FAR *);")
  713.  
  714. cpp_quote("void __RPC_API HBRUSH_to_xmit (HBRUSH __RPC_FAR *, RemHBRUSH __RPC_FAR * __RPC_FAR *);")
  715. cpp_quote("void __RPC_API HBRUSH_from_xmit (RemHBRUSH __RPC_FAR *, HBRUSH __RPC_FAR *);")
  716. cpp_quote("void __RPC_API HBRUSH_free_inst (HBRUSH __RPC_FAR *);")
  717. cpp_quote("void __RPC_API HBRUSH_free_xmit (RemHBRUSH __RPC_FAR *);")
  718.  
  719. cpp_quote("void __RPC_API HMETAFILEPICT_to_xmit (HMETAFILEPICT __RPC_FAR *, RemHMETAFILEPICT __RPC_FAR * __RPC_FAR *);")
  720. cpp_quote("void __RPC_API HMETAFILEPICT_from_xmit (RemHMETAFILEPICT __RPC_FAR *, HMETAFILEPICT __RPC_FAR *);")
  721. cpp_quote("void __RPC_API HMETAFILEPICT_free_inst (HMETAFILEPICT __RPC_FAR *);")
  722. cpp_quote("void __RPC_API HMETAFILEPICT_free_xmit (RemHMETAFILEPICT __RPC_FAR *);")
  723.  
  724. cpp_quote("void __RPC_API HENHMETAFILE_to_xmit (HENHMETAFILE __RPC_FAR *, RemHENHMETAFILE __RPC_FAR * __RPC_FAR *);")
  725. cpp_quote("void __RPC_API HENHMETAFILE_from_xmit (RemHENHMETAFILE __RPC_FAR *, HENHMETAFILE __RPC_FAR *);")
  726. cpp_quote("void __RPC_API HENHMETAFILE_free_inst (HENHMETAFILE __RPC_FAR *);")
  727. cpp_quote("void __RPC_API HENHMETAFILE_free_xmit (RemHENHMETAFILE __RPC_FAR *);")
  728.  
  729. }
  730.