home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / nativcom.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  4KB  |  106 lines

  1.  
  2. // (C) Copyright 1996, Microsoft Corporation and it suppliers.
  3.  
  4. //----------------------------------------------------------------------------
  5. // Public header for COM-marshaling facilities provided by MSJava.dll
  6. //----------------------------------------------------------------------------
  7.  
  8. #ifndef _NATIVCOM_
  9. #define _NATIVCOM_
  10.  
  11.  
  12. #include <windows.h>
  13. #include <native.h>
  14.  
  15.  
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19.  
  20.  
  21. //----------------------------------------------------------------------------
  22. // COM data wrapper helpers...
  23. //----------------------------------------------------------------------------
  24. void* __cdecl jcdwNewData(Hjava_lang_Object * phJCDW, unsigned int numBytes);
  25. void* __cdecl jcdwGetData(Hjava_lang_Object * phJCDW);
  26. unsigned int __cdecl jcdwSizeOf(Hjava_lang_Object * phJCDW);
  27. unsigned int __cdecl jcdwClassSizeOf(Hjava_lang_Object * phJavaClass);
  28. unsigned int __cdecl jcdwOffsetOf(Hjava_lang_Object * phJCDW, const char *pFieldName);
  29. unsigned int __cdecl jcdwClassOffsetOf(Hjava_lang_Object * phJCDWClass, const char *pFieldName);
  30. Hjava_lang_Object * __cdecl convert_IUnknown_to_Java_Object(IUnknown *punk,
  31.                                                             Hjava_lang_Object *phJavaClass,
  32.                                                             int       fAssumeThreadSafe);
  33. Hjava_lang_Object * __cdecl convert_IUnknown_to_Java_Object2(IUnknown    *punk,
  34.                                                              ClassClass  *pClassClass,
  35.                                                              int         fFreeThreaded);
  36.  
  37. IUnknown * __cdecl convert_Java_Object_to_IUnknown(Hjava_lang_Object *phJavaObject, const IID *pIID);
  38.  
  39.  
  40. Hjava_lang_Object * __cdecl convert_ptr_to_jcdw(void              *pExtData,
  41.                                                 Hjava_lang_Object *phJavaClass
  42.                                                 );
  43.  
  44. int __cdecl jcdw_memory_freed_on_gc(Hjava_lang_Object *phJCDW);
  45.  
  46.  
  47. int   __cdecl jcdwSetData(Hjava_lang_Object * phJCDW, LPVOID pv);
  48. int   __cdecl jcdw_java_owned(Hjava_lang_Object *phJCDW);
  49.  
  50.  
  51.  
  52.  
  53. //----------------------------------------------------------------------------
  54. // Map HRESULT to ComException.
  55. //----------------------------------------------------------------------------
  56. void    __cdecl SignalErrorHResult(HRESULT theHRESULT);
  57.  
  58. //----------------------------------------------------------------------------
  59. // Map Java exception to HRESULT.
  60. //----------------------------------------------------------------------------
  61. HRESULT __cdecl HResultFromException(OBJECT* exception_object);
  62.  
  63.  
  64.  
  65. typedef Hjava_lang_Object *JAVAARG;
  66.  
  67. //----------------------------------------------------------------------------
  68. // Information structure for Java->COM Custom Method hook.
  69. //----------------------------------------------------------------------------
  70. typedef struct {
  71.     DWORD                   cbSize;         // size of structure in bytes
  72.     IUnknown               *punk;           // pointer to interface being invoked
  73.     const volatile JAVAARG *pJavaArgs;      // pointer to Java argument stack
  74. } J2CMethodHookInfo;
  75.  
  76. //----------------------------------------------------------------------------
  77. // Information structure for COM->Java Custom Method hook.
  78. //----------------------------------------------------------------------------
  79. typedef struct {
  80.     DWORD                      cbSize;         // size of structure in bytes
  81.     struct methodblock        *javaMethod;     // java method to call
  82.     LPVOID                     pComArgs;       // pointer to COM method argument stack
  83.     const volatile JAVAARG    *ppThis;         // pointer to pointer to Java this
  84.  
  85.     // Store the COM result here.
  86.     union {
  87.         HRESULT                         resHR;
  88.         DWORD                           resDWORD;
  89.         double                          resDouble;
  90.     };
  91. } C2JMethodHookInfo;
  92.  
  93.  
  94.     
  95.  
  96. #ifdef __cplusplus
  97. }
  98. #endif
  99.  
  100.  
  101.  
  102. #endif _NATIVCOM_
  103.  
  104.  
  105.  
  106.