home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 39 / IOPROG_39.ISO / SOFT / sdkjava40.exe / data1.cab / fg_Include / Include / JAVAEXEC.H < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-04  |  7.0 KB  |  197 lines

  1. /*++
  2.  
  3. Copyright (c) 1995-1999  Microsoft Corporation.  All rights reserved.
  4.  
  5. Module Name:
  6.  
  7.     javaexec.h
  8.  
  9. Abstract:
  10.  
  11.     Declarations and definitions for the invocation interface used to launch
  12.     applications in the Microsoft VM.
  13.  
  14. --*/
  15.  
  16. #ifndef _JAVAEXEC_
  17. #define _JAVAEXEC_
  18.  
  19. #ifdef __cplusplus
  20. #if _MSC_VER >= 1100
  21. interface __declspec(novtable) IEnumJAVAPROPERTY;
  22. interface __declspec(novtable) IJavaExecute;
  23. interface __declspec(novtable) IJavaExecute2;
  24. #else
  25. interface IEnumJAVAPROPERTY;
  26. interface IJavaExecute;
  27. interface IJavaExecute2;
  28. #endif
  29. #else
  30. typedef interface IEnumJAVAPROPERTY IEnumJAVAPROPERTY;
  31. typedef interface IJavaExecute IJavaExecute;
  32. typedef interface IJavaExecute2 IJavaExecute2;
  33. #endif
  34.  
  35. typedef IEnumJAVAPROPERTY *LPENUMJAVAPROPERTY;
  36. typedef IJavaExecute *LPJAVAEXECUTE;
  37. typedef IJavaExecute2 *LPJAVAEXECUTE2;
  38.  
  39.  
  40. typedef struct {
  41.     LPOLESTR pszKey;
  42.     LPOLESTR pszValue;
  43. }   JAVAPROPERTY, * LPJAVAPROPERTY;
  44.  
  45. // IJavaExecute2::SetClassSource Type Flags
  46.  
  47. #define CLASS_SOURCE_TYPE_MODULERESOURCES   0x00000001
  48. #define CLASS_SOURCE_TYPE_ISTORAGE          0x00000002
  49. #define CLASS_SOURCE_TYPE_PATH              0x00000004
  50.  
  51. // Data structure to be passed to IJavaExecute2::SetClassSource
  52. // when using the CLASS_SOURCE_TYPE_MODULERESOURCES source type.
  53.  
  54. typedef struct {
  55.     HMODULE hModule;
  56.     DWORD   dwResourceID;
  57. }   JAVACLASSRESOURCEINFO, * LPJAVACLASSRESOURCEINFO;
  58.  
  59. // Data structure to be passed to IJavaExecute2::SetClassSource
  60. // when using the CLASS_SOURCE_TYPE_PATH source type.
  61. typedef struct {
  62.     LPCOLESTR   pszPath;    // semicolon-delimited list of directories
  63.     BOOL        fAppend;    // if TRUE, append path, else prepend
  64.     BYTE        bReserved;  // must be 0
  65.     WORD        wReserved;  // must be 0
  66. }   JAVACLASSPATHINFO, * LPJAVACLASSPATHINFO;
  67.  
  68. #undef  INTERFACE
  69. #define INTERFACE IEnumJAVAPROPERTY
  70.  
  71. DECLARE_INTERFACE_(IEnumJAVAPROPERTY, IUnknown)
  72. {
  73. #ifndef NO_BASEINTERFACE_FUNCS
  74.     /* IUnknown methods */
  75.     STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
  76.     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  77.     STDMETHOD_(ULONG, Release)(THIS) PURE;
  78. #endif
  79.     /* IEnumJAVAPROPERTY methods */
  80.     STDMETHOD(Next)(THIS_ ULONG celt, LPJAVAPROPERTY rgelt, ULONG
  81.         *pceltFetched) PURE;
  82.     STDMETHOD(Skip)(THIS_ ULONG celt) PURE;
  83.     STDMETHOD(Reset)(THIS) PURE;
  84.     STDMETHOD(Clone)(THIS_ LPENUMJAVAPROPERTY *ppenum) PURE;
  85. };
  86.  
  87.  
  88. // This function is called if the Java application calls java/lang/System.exit.
  89. // This function is not called if the Java application drops out of it's main()
  90. // method and returns to the virtual machine.  This function provides the
  91. // opportunity for custom shutdown logic.  If this function returns, then
  92. // Win32's ExitProcess is called; application shutdown cannot be cancelled.
  93. // Multiple threads may call System.exit at once; the virtual machine does not
  94. // serialize calls to this function.
  95. //
  96. // The function is not called in a mode where RNI functions can be directly
  97. // used, however PrepareThreadForJava (see native.h) can be used to enter a mode
  98. // where RNI can be used.
  99. typedef VOID (STDMETHODCALLTYPE *JAVASYSTEMEXITPROC)(int ExitCode);
  100.  
  101.  
  102. typedef struct tagJAVAEXECUTEINFO {
  103.     DWORD cbSize;
  104.     DWORD dwFlags;
  105.     LPCOLESTR pszClassName;
  106.     LPCOLESTR *rgszArgs;
  107.     ULONG cArgs;
  108.     LPCOLESTR pszClassPath;
  109.     LPCOLESTR pszNamespace;
  110. }   JAVAEXECUTEINFO, * LPJAVAEXECUTEINFO;
  111.  
  112. #ifdef __cplusplus
  113. typedef struct tagJAVAEXECUTEINFO2 : public tagJAVAEXECUTEINFO {
  114.     JAVASYSTEMEXITPROC pfnSystemExitProc;
  115. }   JAVAEXECUTEINFO2, * LPJAVAEXECUTEINFO2;
  116. #else
  117. typedef struct tagJAVAEXECUTEINFO2 {
  118.     JAVAEXECUTEINFO jei;
  119.     JAVASYSTEMEXITPROC pfnSystemExitProc;
  120. }   JAVAEXECUTEINFO2, * LPJAVAEXECUTEINFO2;
  121. #endif
  122.  
  123.  
  124. #define JEIF_VERIFYCLASSES                  0x00000002
  125. #define JEIF_ACTIVEXDEBUG                   0x00000004
  126. #define JEIF_NATIVECODEINMODULE             0x00000008
  127. #define JEIF_NAMESPACE_SPECIFIED            0x00000010
  128. #define JEIF_INSTALLSTANDARDSECURITY        0x00000020
  129. #define JEIF_APPLETVIEWER                   0x00000040
  130. #define JEIF_VERBOSESTACKTRACES             0x00000080
  131. #define JEIF_PRINTUNHANDLEDSTACKTRACE       0x00000100
  132. #define JEIF_DEBUGGEE_SHUTDOWN_ON_RELEASE   0x00000200
  133.  
  134. #define JEIF_ALL_FLAGS                      (                                       \
  135.                                                JEIF_VERIFYCLASSES                   \
  136.                                              | JEIF_ACTIVEXDEBUG                    \
  137.                                              | JEIF_NATIVECODEINMODULE              \
  138.                                              | JEIF_NAMESPACE_SPECIFIED             \
  139.                                              | JEIF_INSTALLSTANDARDSECURITY         \
  140.                                              | JEIF_APPLETVIEWER                    \
  141.                                              | JEIF_VERBOSESTACKTRACES              \
  142.                                              | JEIF_PRINTUNHANDLEDSTACKTRACE        \
  143.                                              | JEIF_DEBUGGEE_SHUTDOWN_ON_RELEASE    \
  144.                                             )
  145.  
  146. #undef  INTERFACE
  147. #define INTERFACE IJavaExecute
  148.  
  149. DECLARE_INTERFACE_(IJavaExecute, IUnknown)
  150. {
  151. #ifndef NO_BASEINTERFACE_FUNCS
  152.     /* IUnknown methods */
  153.     STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
  154.     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  155.     STDMETHOD_(ULONG, Release)(THIS) PURE;
  156. #endif
  157.     /* IJavaExecute methods */
  158.     STDMETHOD(GetDefaultClassPath)(THIS_ LPOLESTR *ppszClassPath) PURE;
  159.     STDMETHOD(Execute)(THIS_ LPJAVAEXECUTEINFO pjei, LPERRORINFO *pperrorinfo) PURE;
  160. };
  161.  
  162. #undef  INTERFACE
  163. #define INTERFACE IJavaExecute2
  164.  
  165. DECLARE_INTERFACE_(IJavaExecute2, IJavaExecute)
  166. {
  167. #ifndef NO_BASEINTERFACE_FUNCS
  168.     /* IUnknown methods */
  169.     STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
  170.     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  171.     STDMETHOD_(ULONG, Release)(THIS) PURE;
  172. #endif
  173.     /* IJavaExecute methods */
  174.     STDMETHOD(GetDefaultClassPath)(THIS_ LPOLESTR *ppszClassPath) PURE;
  175.     STDMETHOD(Execute)(THIS_ LPJAVAEXECUTEINFO pjei, LPERRORINFO *pperrorinfo) PURE;
  176.     /* IJavaExecute2 methods */
  177.     STDMETHOD(SetSystemProperties)(THIS_ LPENUMJAVAPROPERTY penumProperties) PURE;
  178.     STDMETHOD(SetClassSource)(THIS_ DWORD dwType, LPVOID pData, DWORD dwLen) PURE;
  179. };
  180.  
  181. #undef  INTERFACE
  182.  
  183. // {3EFB1800-C2A1-11cf-960C-0080C7C2BA87}
  184. DEFINE_GUID(CLSID_JavaExecute,
  185. 0x3efb1800, 0xc2a1, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0xc2, 0xba, 0x87);
  186. // {3EFB1803-C2A1-11cf-960C-0080C7C2BA87}
  187. DEFINE_GUID(IID_IJavaExecute,
  188. 0x3efb1803, 0xc2a1, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0xc2, 0xba, 0x87);
  189. // {D7658820-01DD-11d0-9746-00AA00342BD8}
  190. DEFINE_GUID(IID_IJavaExecute2,
  191. 0xd7658820, 0x1dd, 0x11d0, 0x97, 0x46, 0x0, 0xaa, 0x0, 0x34, 0x2b, 0xd8);
  192. // {56E7DF80-F527-11cf-B728-FC8703C10000}
  193. DEFINE_GUID(IID_IEnumJAVAPROPERTY,
  194. 0x56e7df80, 0xf527, 0x11cf, 0xb7, 0x28, 0xfc, 0x87, 0x3, 0xc1, 0x0, 0x0);
  195.  
  196. #endif
  197.