home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 39 / IOPROG_39.ISO / SOFT / sdkjava40.exe / data1.cab / fg_Samples / Samples / Debugger / JavaDbg.idl < prev    next >
Encoding:
Text File  |  2000-05-04  |  37.8 KB  |  1,987 lines

  1. /*++
  2.  
  3. (C) Copyright 1995 - 1999 Microsoft Corporation.  All rights reserved.
  4.  
  5. Module Name:
  6.  
  7.     javadbg.idl
  8.  
  9. Abstract:
  10.  
  11.     Java debugging interfaces.
  12.  
  13. --*/
  14.  
  15. import "oleidl.idl";
  16.  
  17. interface IEnumLINEINFO;
  18. interface IEnumRemoteBooleanValue;
  19. interface IEnumRemoteByteValue;
  20. interface IEnumRemoteCharValue;
  21. interface IEnumRemoteDoubleValue;
  22. interface IEnumRemoteField;
  23. interface IEnumRemoteFloatValue;
  24. interface IEnumRemoteIntValue;
  25. interface IEnumRemoteLongValue;
  26. interface IEnumRemoteObject;
  27. interface IEnumRemoteProcess;
  28. interface IEnumRemoteShortValue;
  29. interface IEnumRemoteStackFrames;
  30. interface IEnumRemoteThread;
  31. interface IEnumRemoteThreadGroup;
  32. interface IEnumRemoteValue;
  33. interface IJavaDebugManager;
  34. interface IJavaLEDebugManager;
  35. interface IRemoteArrayField;
  36. interface IRemoteArrayObject;
  37. interface IRemoteBooleanObject;
  38. interface IRemoteByteObject;
  39. interface IRemoteCharObject;
  40. interface IRemoteClassField;
  41. interface IRemoteClassFieldEx;
  42. interface IRemoteClassObject;
  43. interface IRemoteContainerField;
  44. interface IRemoteContainerObject;
  45. interface IRemoteDataField;
  46. interface IRemoteDebugManager;
  47. interface IRemoteDebugManagerCallback;
  48. interface IRemoteDebugManagerCallbackEx;
  49. interface IRemoteDoubleObject;
  50. interface IRemoteField;
  51. interface IRemoteFloatObject;
  52. interface IRemoteIntObject;
  53. interface IRemoteLongObject;
  54. interface IRemoteMethodField;
  55. interface IRemoteObject;
  56. interface IRemoteProcess;
  57. interface IRemoteProcessCallback;
  58. interface IRemoteProcessCallbackEx;
  59. interface IRemoteProcessCallbackEx2;
  60. interface IRemoteShortObject;
  61. interface IRemoteStackFrame;
  62. interface IRemoteStackFrameEx;
  63. interface IRemoteThread;
  64. interface IRemoteThreadEx;
  65. interface IRemoteThreadGroup;
  66. interface IMethodLocation;
  67. interface IEnumCodeBreakpoints;
  68.  
  69. interface IJavaEnumLINEINFO;
  70. interface IJavaEnumRemoteBooleanValue;
  71. interface IJavaEnumRemoteByteValue;
  72. interface IJavaEnumRemoteCharValue;
  73. interface IJavaEnumRemoteDoubleValue;
  74. interface IJavaEnumRemoteFloatValue;
  75. interface IJavaEnumRemoteIntValue;
  76. interface IJavaEnumRemoteLongValue;
  77. interface IJavaEnumRemoteShortValue;
  78. interface IJavaEnumRemoteField;
  79. interface IJavaEnumRemoteObject;
  80. interface IJavaEnumRemoteProcess;
  81. interface IJavaEnumRemoteThread;
  82. interface IJavaEnumRemoteThreadGroup;
  83.  
  84.  
  85. //
  86. // error codes
  87. //
  88. cpp_quote("// error codes")
  89. cpp_quote("//")
  90. cpp_quote("// errors returned by IRemoteContainer::GetFieldObject")
  91. cpp_quote("#define E_FIELDOUTOFSCOPE        (0x80040001)")
  92. cpp_quote("#define E_FIELDNOTINOBJECT       (0x80040002)")
  93. cpp_quote("#define E_NOFIELDS               (0x80040003)")
  94. cpp_quote("#define E_NULLOBJECTREF          (0x80040004)")
  95. cpp_quote("// errors returned by IRemoteProcess::FindClass")
  96. cpp_quote("#define E_CLASSNOTFOUND          (0x80040010)")
  97. cpp_quote("// errors returned by IRemoteMethodField")
  98. cpp_quote("#define E_BADMETHOD              (0x80040020)")
  99. cpp_quote("#define E_NODEBUGINFORMATION     (0x80040021)")
  100. cpp_quote("#define E_NOBREAKPOINTS          (0x80040022)")
  101. cpp_quote("// errors returned by IRemoteContainerObject::GetFieldObject")
  102. cpp_quote("#define E_NOTINITIALIZED         (0x80040100)")
  103. cpp_quote("// errors returned by IRemoteObject::SetBreakpoint")
  104. cpp_quote("#define E_TOOMANYBREAKPOINTS     (0x80040101)")
  105. cpp_quote("// errors returned by IRemoteObject or IRemoteField")
  106. cpp_quote("#define E_NOLONGERVALID          (0x80040102)")
  107. cpp_quote("// errors returned by IRemoteStackFrame::SetPC")
  108. cpp_quote("// The PC is not within the method or at a valid opcode boundary.")
  109. cpp_quote("#define E_INVALIDPC              (0x80040103)")
  110.  
  111.  
  112. // Environment variable flag values
  113. enum
  114. {
  115.     // Disable the JIT compiler so that bytecode execution may be profiled.
  116.     MSJDBG_FL_REQUIRE_BYTE_CODE_EXECUTION       = 0x0001,
  117.  
  118.     // Enable profiling.
  119.     MSJDBG_FL_ENABLE_PROFILING                  = 0x0002,
  120.  
  121.     // Don't use hardware breakpoints.
  122.     MSJDBG_NO_HARDWARE_BREAKPOINTS              = 0x0004,
  123.  
  124.     // Don't use page breakpoints.
  125.     MSJDBG_NO_PAGE_BREAKPOINTS                  = 0x0008,
  126.  
  127.     // Disable JIT-compiled code debugging.
  128.     MSJDBG_DISABLE_JIT_COMPILED_CODE_DEBUGGING  = 0x0010,
  129.  
  130.     // Show native/COM/delegate frames in call stacks and allow stepping in
  131.     // these frames.
  132.     MSJDBG_DEBUG_NATIVE_METHODS                 = 0x0020,
  133.  
  134.     // Send StartClassEvent when an applet, control, or application is
  135.     // loaded.
  136.     MSJDBG_SEND_START_CLASS_EVENTS              = 0x0040,
  137.  
  138.     // Send a CanStopEvent on leaving the stepping frame, else a StepEvent.
  139.     MSJDBG_SEND_CAN_STOP_EVENT_ON_STEP_OUT      = 0x0080,
  140.  
  141.     // Ignore methods without debug information while stepping.
  142.     MSJDBG_IGNORE_METHODS_WITHOUT_DEBUG_INFO    = 0x0200,
  143.  
  144.     // On stepping out of a top-most frame, send a CanStopEvent/StepEvent at
  145.     // the next debuggable frame.  Default behavior is to stop stepping.
  146.     MSJDBG_STEP_AT_THREAD_REENTRY               = 0x0400,
  147.  
  148.     // Never return E_NULLOBJECTREF from GetFieldObject; instead, wait until
  149.     // the object is used.  (This is necessary to be able to set data
  150.     // breakpoints on locations that are currently null.)
  151.     MSJDBG_CREATE_NULL_OBJECTS                  = 0x0800,
  152.  
  153.     // Never succeessfully return an interface that may be used in a
  154.     // type-unsafe way.  Default behavior is to allow QueryInterface to succeed
  155.     // for any IRemoteXXXObject on any primitive location, ex. this flag
  156.     // prevents the debugger from reading an int location as a double.
  157.     MSJDBG_STRICT_TYPE_CHECKS                   = 0x1000,
  158.  
  159.     // Disables compatibility modes for DebugStringEvent.  A proper
  160.     // implementation of DebugStringEvent should:
  161.     // - interpret control characters sensibly.  Lone '\r' and '\n' characters
  162.     //   will be automatically converted to "\r\n" pairs by the VM.
  163.     // - appropriately convert and display the Unicode characters
  164.     // - display the strings in a timely manner.  A debugger should not wait
  165.     //   until a "\r\n" to display the output.
  166.     // - permit multiple lines in the string.
  167.     // - permit empty strings/blank lines.
  168.     MSJDBG_REGULAR_DEBUG_STRING_EVENT           = 0x2000,
  169. };
  170.  
  171.  
  172. [
  173.     object,
  174.     uuid(275d9da0-5ff5-11cf-a5e1-00aa006bbf16)
  175. ]
  176.  
  177. interface IEnumLINEINFO : IUnknown
  178. {
  179.     typedef IEnumLINEINFO *LPENUMLINEINFO;
  180.  
  181.     typedef struct tagLINEINFO
  182.     {
  183.         USHORT offPC;
  184.         USHORT iLine;
  185.     }
  186.     LINEINFO, *LPLINEINFO;
  187.  
  188.     HRESULT Next
  189.     (
  190.         [in] ULONG celt,
  191.         [out, size_is(celt), length_is(*pceltFetched)] LPLINEINFO rgelt,
  192.         [out] ULONG *pceltFetched
  193.     );
  194.  
  195.     HRESULT Skip
  196.     (
  197.         [in] ULONG celt
  198.     );
  199.  
  200.     HRESULT Reset
  201.     (
  202.     );
  203.  
  204.     HRESULT Clone
  205.     (
  206.         [out, retval] IJavaEnumLINEINFO **ppEnum
  207.     );
  208.  
  209.     HRESULT GetCount
  210.     (
  211.         [out, retval] ULONG *pcelt
  212.     );
  213. }
  214.  
  215.  
  216. [
  217.     object,
  218.     uuid(CB33C082-16E6-11d0-ACBB-00401C608501)
  219. ]
  220.  
  221. interface IJavaEnumLINEINFO : IEnumLINEINFO
  222. {
  223.     HRESULT GetNext
  224.     (
  225.         [out] LINEINFO *pli
  226.     );
  227. }
  228.  
  229.  
  230. [
  231.     object,
  232.     uuid(275d9d80-5ff5-11cf-a5e1-00aa006bbf16)
  233. ]
  234.  
  235. interface IRemoteField : IUnknown
  236. {
  237.     typedef IRemoteField *LPREMOTEFIELD;
  238.  
  239.     HRESULT GetName
  240.     (
  241.         [out, retval] LPOLESTR *ppszName
  242.     );
  243.  
  244.     //
  245.     // field kinds
  246.     //
  247.     enum
  248.     {
  249.         FIELD_KIND_DATA_OBJECT      = 0x00000001,
  250.         FIELD_KIND_DATA_PRIMITIVE   = 0x00000002,
  251.         FIELD_KIND_ARRAY            = 0x00000004,
  252.         FIELD_KIND_CLASS            = 0x00000008,
  253.         FIELD_KIND_METHOD           = 0x00000010,
  254.         FIELD_KIND_LOCAL            = 0x00001000,
  255.         FIELD_KIND_PARAM            = 0x00002000,
  256.         FIELD_KIND_THIS             = 0x00004000,
  257.         FIELD_KIND_INNER_CLASS      = 0x00008000,
  258.     };
  259.     typedef ULONG FIELDKIND;
  260.  
  261.     HRESULT GetKind
  262.     (
  263.         [out, retval] FIELDKIND *pfk
  264.     );
  265.  
  266.     HRESULT GetType
  267.     (
  268.         [out, retval] IRemoteField **ppType
  269.     );
  270.  
  271.     HRESULT GetContainer
  272.     (
  273.         [out, retval] IRemoteContainerField **ppContainer
  274.     );
  275.  
  276.     //
  277.     // Modifier flags
  278.     //
  279.     enum
  280.     {
  281.         FIELD_ACC_PUBLIC        = 0x00000001,
  282.         FIELD_ACC_PRIVATE       = 0x00000002,
  283.         FIELD_ACC_PROTECTED     = 0x00000004,
  284.         FIELD_ACC_STATIC        = 0x00000008,
  285.         FIELD_ACC_FINAL         = 0x00000010,
  286.         FIELD_ACC_SYNCHRONIZED  = 0x00000020,
  287.         FIELD_ACC_VOLATILE      = 0x00000040,
  288.         FIELD_ACC_TRANSIENT     = 0x00000080,
  289.         FIELD_ACC_NATIVE        = 0x00000100,
  290.         FIELD_ACC_INTERFACE     = 0x00000200,
  291.         FIELD_ACC_ABSTRACT      = 0x00000400,
  292.         FIELD_ACC_SUPER         = 0x00000800,
  293.         FIELD_ACC_SYNTHETIC     = 0x00001000,
  294.     };
  295.     typedef ULONG FIELDMODIFIERS;
  296.  
  297.     HRESULT GetModifiers
  298.     (
  299.         [out, retval] FIELDMODIFIERS *pulModifiers
  300.     );
  301. }
  302.  
  303.  
  304. [
  305.     object,
  306.     uuid(275d9da1-5ff5-11cf-a5e1-00aa006bbf16)
  307. ]
  308.  
  309. interface IEnumRemoteField : IUnknown
  310. {
  311.     typedef IEnumRemoteField *LPENUMREMOTEFIELD;
  312.  
  313.     HRESULT Next
  314.     (
  315.         [in] ULONG celt,
  316.         [out, size_is(celt), length_is(*pceltFetched)] IRemoteField *rgelt[],
  317.         [out] ULONG *pceltFetched
  318.     );
  319.  
  320.     HRESULT Skip
  321.     (
  322.         [in] ULONG celt
  323.     );
  324.  
  325.     HRESULT Reset
  326.     (
  327.     );
  328.  
  329.     HRESULT Clone
  330.     (
  331.         [out, retval] IJavaEnumRemoteField **ppEnum
  332.     );
  333.  
  334.     HRESULT GetCount
  335.     (
  336.         [out, retval] ULONG *pcelt
  337.     );
  338. }
  339.  
  340.  
  341. [
  342.     object,
  343.     uuid(CB33C083-16E6-11d0-ACBB-00401C608501)
  344. ]
  345.  
  346. interface IJavaEnumRemoteField : IEnumRemoteField
  347. {
  348.     HRESULT GetNext
  349.     (
  350.         [out, retval] IRemoteField **ppirf
  351.     );
  352. }
  353.  
  354.  
  355. [
  356.     object,
  357.     uuid(275d9d81-5ff5-11cf-a5e1-00aa006bbf16)
  358. ]
  359.  
  360. interface IRemoteDataField : IRemoteField
  361. {
  362.     typedef IRemoteDataField *LPREMOTEDATAFIELD;
  363. }
  364.  
  365.  
  366. [
  367.     object,
  368.     uuid(275d9d82-5ff5-11cf-a5e1-00aa006bbf16)
  369. ]
  370.  
  371. interface IRemoteArrayField : IRemoteDataField
  372. {
  373.     typedef IRemoteArrayField *LPREMOTEARRAYFIELD;
  374.  
  375.     HRESULT GetSize
  376.     (
  377.         [out, retval] ULONG *pcElements
  378.     );
  379. }
  380.  
  381.  
  382. [
  383.     object,
  384.     uuid(275d9d83-5ff5-11cf-a5e1-00aa006bbf16)
  385. ]
  386.  
  387. interface IRemoteContainerField : IRemoteField
  388. {
  389.     typedef IRemoteContainerField *LPREMOTECONTAINERFIELD;
  390.  
  391.     HRESULT GetFields
  392.     (
  393.         [out] IJavaEnumRemoteField **ppEnum,
  394.         [in] FIELDKIND ulKind,
  395.         [in] FIELDMODIFIERS ulModifiers,
  396.         [in, unique] LPCOLESTR lpcszName
  397.     );
  398. }
  399.  
  400.  
  401. [
  402.     object,
  403.     uuid(275d9d84-5ff5-11cf-a5e1-00aa006bbf16)
  404. ]
  405.  
  406. interface IRemoteMethodField : IRemoteContainerField
  407. {
  408.     typedef IRemoteMethodField *LPREMOTEMETHODFIELD;
  409.  
  410.     HRESULT SetBreakpoint
  411.     (
  412.         [in] ULONG offPC
  413.     );
  414.  
  415.     HRESULT ClearBreakpoint
  416.     (
  417.         [in] ULONG offPC
  418.     );
  419.  
  420.     HRESULT GetLineInfo
  421.     (
  422.         [out, retval] IJavaEnumLINEINFO **ppEnum
  423.     );
  424.  
  425.     HRESULT GetBytes
  426.     (
  427.         [out, retval] ILockBytes **ppLockBytes
  428.     );
  429.  
  430.     HRESULT GetScope
  431.     (
  432.         [in, unique] IRemoteField *pField,
  433.         [out] ULONG *poffStart,
  434.         [out] ULONG *pcbScope
  435.     );
  436.  
  437.     HRESULT GetIndexedField
  438.     (
  439.         [in] ULONG slot,
  440.         [in] ULONG offPC,
  441.         [out, retval] IRemoteField **ppField
  442.     );
  443. }
  444.  
  445.  
  446. [
  447.     object,
  448.     uuid(6E2E7A20-C9CE-11d1-B040-006008039BF0)
  449. ]
  450. interface IRemoteMethodFieldEx : IRemoteMethodField
  451. {
  452.     HRESULT GetCodeBreakpoints
  453.     (
  454.         [out, retval] IEnumCodeBreakpoints **ppiecbp
  455.     );
  456.  
  457.     HRESULT GetMethodLocationForPC
  458.     (
  459.         [in] ULONG ulPC,
  460.         [out, retval] IMethodLocation **ppiml
  461.     );
  462. }
  463.  
  464.  
  465. [
  466.     object,
  467.     uuid(275d9d85-5ff5-11cf-a5e1-00aa006bbf16)
  468. ]
  469.  
  470. interface IRemoteClassField : IRemoteContainerField
  471. {
  472.     typedef IRemoteClassField *LPREMOTECLASSFIELD;
  473.  
  474.     //
  475.     // Constant pool tags
  476.     //
  477.     enum
  478.     {
  479.         CP_CONSTANT_UTF8                = 1,
  480.         CP_CONSTANT_UNICODE             = 2,
  481.         CP_CONSTANT_INTEGER             = 3,
  482.         CP_CONSTANT_FLOAT               = 4,
  483.         CP_CONSTANT_LONG                = 5,
  484.         CP_CONSTANT_DOUBLE              = 6,
  485.         CP_CONSTANT_CLASS               = 7,
  486.         CP_CONSTANT_STRING              = 8,
  487.         CP_CONSTANT_FIELDREF            = 9,
  488.         CP_CONSTANT_METHODREF           = 10,
  489.         CP_CONSTANT_INTERFACEMETHODREF  = 11,
  490.         CP_CONSTANT_NAMEANDTYPE         = 12
  491.     };
  492.  
  493.     HRESULT GetFileName
  494.     (
  495.         [out, retval] LPOLESTR *ppszFileName
  496.     );
  497.  
  498.     HRESULT GetSourceFileName
  499.     (
  500.         [out, retval] LPOLESTR *ppszSourceFileName
  501.     );
  502.  
  503.     HRESULT GetSuperclass
  504.     (
  505.         [out, retval] IRemoteClassField **ppSuperclass
  506.     );
  507.  
  508.     HRESULT GetInterfaces
  509.     (
  510.         [out, retval] IJavaEnumRemoteField **ppEnum
  511.     );
  512.  
  513.     HRESULT GetConstantPoolItem
  514.     (
  515.         [in] ULONG indexCP,
  516.         [out, size_is(,*plength)] BYTE **ppCPBytes,
  517.         [out] ULONG *plength
  518.     );
  519. }
  520.  
  521.  
  522. [
  523.     object,
  524.     uuid(F6457430-E998-11d1-B044-006008039BF0)
  525. ]
  526. interface IRemotePrimitiveClassField : IRemoteClassField
  527. {
  528.     enum
  529.     {
  530.         PRIMITIVE_VOID      = 1,
  531.         PRIMITIVE_BOOLEAN   = 2,
  532.         PRIMITIVE_BYTE      = 3,
  533.         PRIMITIVE_CHAR      = 4,
  534.         PRIMITIVE_SHORT     = 5,
  535.         PRIMITIVE_INT       = 6,
  536.         PRIMITIVE_FLOAT     = 7,
  537.         PRIMITIVE_LONG      = 8,
  538.         PRIMITIVE_DOUBLE    = 9,
  539.     };
  540.     typedef ULONG PRIMITIVE_TYPE;
  541.  
  542.     HRESULT GetPrimitiveType
  543.     (
  544.         [out, retval] PRIMITIVE_TYPE *pPrimitiveType
  545.     );
  546. }
  547.  
  548.  
  549. [
  550.     object,
  551.     uuid(C8DF0FF6-7595-11d1-B6CB-0000F87572EF)
  552. ]
  553. interface IRemoteClassFieldEx : IRemoteClassField
  554. {
  555.     HRESULT GetSourceFileDir
  556.     (
  557.         [out, retval] LPOLESTR *ppszSourceFileName
  558.     );
  559. }
  560.  
  561.  
  562. [
  563.     object,
  564.     uuid(848E2A30-6A11-11d1-BA38-006008039BF0)
  565. ]
  566. interface IRemoteInnerClassField : IRemoteClassFieldEx
  567. {
  568.     HRESULT GetInnerClassName
  569.     (
  570.         [out, retval] LPOLESTR *ppszName
  571.     );
  572.  
  573.     HRESULT GetInnerClassModifiers
  574.     (
  575.         [out, retval] FIELDMODIFIERS *pulModifiers
  576.     );
  577.  
  578.     HRESULT GetOuterClass
  579.     (
  580.         [out, retval] IRemoteClassField **ppOuterClass
  581.     );
  582. }
  583.  
  584.  
  585. [
  586.     object,
  587.     uuid(275d9db0-5ff5-11cf-a5e1-00aa006bbf16)
  588. ]
  589.  
  590. interface IRemoteObject : IUnknown
  591. {
  592.     typedef IRemoteObject *LPREMOTEOBJECT;
  593.  
  594.     HRESULT GetType
  595.     (
  596.         [out, retval] IRemoteField **ppType
  597.     );
  598.  
  599.     HRESULT SetBreakpoint
  600.     (
  601.     );
  602.  
  603.     HRESULT ClearBreakpoint
  604.     (
  605.     );
  606.  
  607.     //
  608.     // JAVA built-int types
  609.     //
  610.     typedef BYTE JAVA_BOOLEAN;
  611.     typedef signed char JAVA_BYTE;
  612.     typedef USHORT JAVA_CHAR;
  613.     typedef double JAVA_DOUBLE;
  614.     typedef float JAVA_FLOAT;
  615.     typedef LONG JAVA_INT;
  616.     typedef LONGLONG JAVA_LONG;
  617.     typedef SHORT JAVA_SHORT;
  618.     typedef LPOLESTR JAVA_STRING;
  619. }
  620.  
  621.  
  622. [
  623.     object,
  624.     uuid(9C4F66F0-5A2C-11d1-BA33-006008039BF0)
  625. ]
  626.  
  627. interface IRemoteObjectEx : IRemoteObject
  628. {
  629.     HRESULT IsSameObject
  630.     (
  631.         [in] IRemoteObject *other
  632.     );
  633.  
  634.     HRESULT GetContainer
  635.     (
  636.         [out, retval] IRemoteObject **ppContainer
  637.     );
  638.  
  639.     HRESULT GetIdentity
  640.     (
  641.         [out, retval] IRemoteObjectEx **ppIdentity
  642.     );
  643. }
  644.  
  645.  
  646. [
  647.     object,
  648.     uuid(275d9da2-5ff5-11cf-a5e1-00aa006bbf16)
  649. ]
  650.  
  651. interface IEnumRemoteObject : IUnknown
  652. {
  653.     typedef IEnumRemoteObject *LPENUMREMOTEOBJECT;
  654.  
  655.     HRESULT Next
  656.     (
  657.         [in] ULONG celt,
  658.         [out, size_is(celt), length_is(*pceltFetched)] IRemoteObject *rgelt[],
  659.         [out] ULONG *pceltFetched
  660.     );
  661.  
  662.     HRESULT Skip
  663.     (
  664.         [in] ULONG celt
  665.     );
  666.  
  667.     HRESULT Reset
  668.     (
  669.     );
  670.  
  671.     HRESULT Clone
  672.     (
  673.         [out, retval] IJavaEnumRemoteObject **ppEnum
  674.     );
  675.  
  676.     HRESULT GetCount
  677.     (
  678.         [out, retval] ULONG *pcelt
  679.     );
  680. }
  681.  
  682.  
  683. [
  684.     object,
  685.     uuid(CB33C084-16E6-11d0-ACBB-00401C608501)
  686. ]
  687.  
  688. interface IJavaEnumRemoteObject : IEnumRemoteObject
  689. {
  690.     HRESULT GetNext
  691.     (
  692.         [out, retval] IRemoteObject **ppiro
  693.     );
  694. }
  695.  
  696.  
  697. [
  698.     object,
  699.     uuid(da0a7738-de8e-11cf-b3b3-00a0244a1dd2)
  700. ]
  701.  
  702. interface IEnumRemoteValue : IUnknown
  703. {
  704.     typedef IEnumRemoteValue *LPENUMREMOTEVALUE;
  705.  
  706.     HRESULT Skip
  707.     (
  708.         [in] ULONG celt
  709.     );
  710.  
  711.     HRESULT Reset
  712.     (
  713.     );
  714.  
  715.     HRESULT Clone
  716.     (
  717.         [out, retval] IEnumRemoteValue **ppEnum
  718.     );
  719.  
  720.     HRESULT GetCount
  721.     (
  722.         [out, retval] ULONG *pcelt
  723.     );
  724. }
  725.  
  726.  
  727. [
  728.     object,
  729.     uuid(282e2c9c-df62-11cf-b3b3-00a0244a1dd2)
  730. ]
  731.  
  732. interface IEnumRemoteBooleanValue : IEnumRemoteValue
  733. {
  734.     typedef IEnumRemoteBooleanValue *LPENUMREMOTEBOOLEANVALUE;
  735.  
  736.     HRESULT Next
  737.     (
  738.         [in] ULONG celt,
  739.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_BOOLEAN rgelt[],
  740.         [out] ULONG *pceltFetched
  741.     );
  742. }
  743.  
  744.  
  745. [
  746.     object,
  747.     uuid(CB33C086-16E6-11d0-ACBB-00401C608501)
  748. ]
  749.  
  750. interface IJavaEnumRemoteBooleanValue : IEnumRemoteBooleanValue
  751. {
  752.     HRESULT GetNext
  753.     (
  754.         [out, retval] JAVA_BOOLEAN *pjb
  755.     );
  756. }
  757.  
  758.  
  759. [
  760.     object,
  761.     uuid(29831ce2-df62-11cf-b3b3-00a0244a1dd2)
  762. ]
  763.  
  764. interface IEnumRemoteByteValue : IEnumRemoteValue
  765. {
  766.     typedef IEnumRemoteByteValue *LPENUMREMOTEBYTEVALUE;
  767.  
  768.     HRESULT Next
  769.     (
  770.         [in] ULONG celt,
  771.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_BYTE rgelt[],
  772.         [out] ULONG *pceltFetched
  773.     );
  774. }
  775.  
  776.  
  777. [
  778.     object,
  779.     uuid(CB33C087-16E6-11d0-ACBB-00401C608501)
  780. ]
  781.  
  782. interface IJavaEnumRemoteByteValue : IEnumRemoteByteValue
  783. {
  784.     HRESULT GetNext
  785.     (
  786.         [out, retval] JAVA_BYTE *pjbyte
  787.     );
  788. }
  789.  
  790.  
  791. [
  792.     object,
  793.     uuid(c5d31048-de81-11cf-b3b3-00a0244a1dd2)
  794. ]
  795.  
  796. interface IEnumRemoteCharValue : IEnumRemoteValue
  797. {
  798.     typedef IEnumRemoteCharValue *LPENUMREMOTECHARVALUE;
  799.  
  800.     HRESULT Next
  801.     (
  802.         [in] ULONG celt,
  803.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_CHAR rgelt[],
  804.         [out] ULONG *pceltFetched
  805.     );
  806. }
  807.  
  808.  
  809. [
  810.     object,
  811.     uuid(CB33C088-16E6-11d0-ACBB-00401C608501)
  812. ]
  813.  
  814. interface IJavaEnumRemoteCharValue : IEnumRemoteCharValue
  815. {
  816.     HRESULT GetNext
  817.     (
  818.         [out, retval] JAVA_CHAR *pjch
  819.     );
  820. }
  821.  
  822.  
  823. [
  824.     object,
  825.     uuid(9dc9ac24-df62-11cf-b3b3-00a0244a1dd2)
  826. ]
  827.  
  828. interface IEnumRemoteDoubleValue : IEnumRemoteValue
  829. {
  830.     typedef IEnumRemoteDoubleValue *LPENUMREMOTEDOUBLEVALUE;
  831.  
  832.     HRESULT Next
  833.     (
  834.         [in] ULONG celt,
  835.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_DOUBLE rgelt[],
  836.         [out] ULONG *pceltFetched
  837.     );
  838. }
  839.  
  840.  
  841. [
  842.     object,
  843.     uuid(CB33C089-16E6-11d0-ACBB-00401C608501)
  844. ]
  845.  
  846. interface IJavaEnumRemoteDoubleValue : IEnumRemoteDoubleValue
  847. {
  848.     HRESULT GetNext
  849.     (
  850.         [out, retval] JAVA_DOUBLE *pjdbl
  851.     );
  852. }
  853.  
  854.  
  855. [
  856.     object,
  857.     uuid(a4c10b1c-df62-11cf-b3b3-00a0244a1dd2)
  858. ]
  859.  
  860. interface IEnumRemoteFloatValue : IEnumRemoteValue
  861. {
  862.     typedef IEnumRemoteFloatValue *LPENUMREMOTEFLOATVALUE;
  863.  
  864.     HRESULT Next
  865.     (
  866.         [in] ULONG celt,
  867.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_FLOAT rgelt[],
  868.         [out] ULONG *pceltFetched
  869.     );
  870. }
  871.  
  872.  
  873. [
  874.     object,
  875.     uuid(CB33C08A-16E6-11d0-ACBB-00401C608501)
  876. ]
  877.  
  878. interface IJavaEnumRemoteFloatValue : IEnumRemoteFloatValue
  879. {
  880.     HRESULT GetNext
  881.     (
  882.         [out, retval] JAVA_FLOAT *pjflt
  883.     );
  884. }
  885.  
  886.  
  887. [
  888.     object,
  889.     uuid(aa5eb51a-df62-11cf-b3b3-00a0244a1dd2)
  890. ]
  891.  
  892. interface IEnumRemoteIntValue : IEnumRemoteValue
  893. {
  894.     typedef IEnumRemoteIntValue *LPENUMREMOTEINTVALUE;
  895.  
  896.     HRESULT Next
  897.     (
  898.         [in] ULONG celt,
  899.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_INT rgelt[],
  900.         [out] ULONG *pceltFetched
  901.     );
  902. }
  903.  
  904.  
  905. [
  906.     object,
  907.     uuid(CB33C08B-16E6-11d0-ACBB-00401C608501)
  908. ]
  909.  
  910. interface IJavaEnumRemoteIntValue : IEnumRemoteIntValue
  911. {
  912.     HRESULT GetNext
  913.     (
  914.         [out, retval] JAVA_INT *pjn
  915.     );
  916. }
  917.  
  918.  
  919. [
  920.     object,
  921.     uuid(b208e470-df62-11cf-b3b3-00a0244a1dd2)
  922. ]
  923.  
  924. interface IEnumRemoteLongValue : IEnumRemoteValue
  925. {
  926.     typedef IEnumRemoteLongValue *LPENUMREMOTELONGVALUE;
  927.  
  928.     HRESULT Next
  929.     (
  930.         [in] ULONG celt,
  931.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_LONG rgelt[],
  932.         [out] ULONG *pceltFetched
  933.     );
  934. }
  935.  
  936.  
  937. [
  938.     object,
  939.     uuid(CB33C08C-16E6-11d0-ACBB-00401C608501)
  940. ]
  941.  
  942. interface IJavaEnumRemoteLongValue : IEnumRemoteLongValue
  943. {
  944.     HRESULT GetNext
  945.     (
  946.         [out, retval] JAVA_LONG *pjl
  947.     );
  948. }
  949.  
  950.  
  951. [
  952.     object,
  953.     uuid(b74e576c-df62-11cf-b3b3-00a0244a1dd2)
  954. ]
  955.  
  956. interface IEnumRemoteShortValue : IEnumRemoteValue
  957. {
  958.     typedef IEnumRemoteShortValue *LPENUMREMOTESHORTVALUE;
  959.  
  960.     HRESULT Next
  961.     (
  962.         [in] ULONG celt,
  963.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_SHORT rgelt[],
  964.         [out] ULONG *pceltFetched
  965.     );
  966. }
  967.  
  968.  
  969. [
  970.     object,
  971.     uuid(CB33C08D-16E6-11d0-ACBB-00401C608501)
  972. ]
  973.  
  974. interface IJavaEnumRemoteShortValue : IEnumRemoteShortValue
  975. {
  976.     HRESULT GetNext
  977.     (
  978.         [out, retval] JAVA_SHORT *pjsh
  979.     );
  980. }
  981.  
  982.  
  983. [
  984.     object,
  985.     uuid(275d9db1-5ff5-11cf-a5e1-00aa006bbf16)
  986. ]
  987.  
  988. interface IRemoteArrayObject : IRemoteObject
  989. {
  990.     typedef IRemoteArrayObject *LPREMOTEARRAYOBJECT;
  991.  
  992.     HRESULT GetElementObjects
  993.     (
  994.         [out, retval] IJavaEnumRemoteObject **ppEnum
  995.     );
  996.  
  997.     HRESULT GetSize
  998.     (
  999.         [out, retval] ULONG *pcElements
  1000.     );
  1001.  
  1002.     HRESULT GetElementValues
  1003.     (
  1004.         [out, retval] IEnumRemoteValue **ppEnum
  1005.     );
  1006. }
  1007.  
  1008.  
  1009. [
  1010.     object,
  1011.     uuid(275d9db2-5ff5-11cf-a5e1-00aa006bbf16)
  1012. ]
  1013.  
  1014. interface IRemoteBooleanObject : IRemoteObject
  1015. {
  1016.     typedef IRemoteBooleanObject *LPREMOTEBOOLEANOBJECT;
  1017.  
  1018.     HRESULT GetValue
  1019.     (
  1020.         [out, retval] JAVA_BOOLEAN *pvalue
  1021.     );
  1022.  
  1023.     HRESULT SetValue
  1024.     (
  1025.         [in] JAVA_BOOLEAN value
  1026.     );
  1027. }
  1028.  
  1029.  
  1030. [
  1031.     object,
  1032.     uuid(275d9db3-5ff5-11cf-a5e1-00aa006bbf16)
  1033. ]
  1034.  
  1035. interface IRemoteByteObject : IRemoteObject
  1036. {
  1037.     typedef IRemoteByteObject *LPREMOTEBYTEOBJECT;
  1038.  
  1039.     HRESULT GetValue
  1040.     (
  1041.         [out, retval] JAVA_BYTE *pvalue
  1042.     );
  1043.  
  1044.     HRESULT SetValue
  1045.     (
  1046.         [in] JAVA_BYTE value
  1047.     );
  1048. }
  1049.  
  1050.  
  1051. [
  1052.     object,
  1053.     uuid(275d9db4-5ff5-11cf-a5e1-00aa006bbf16)
  1054. ]
  1055.  
  1056. interface IRemoteCharObject : IRemoteObject
  1057. {
  1058.     typedef IRemoteCharObject *LPREMOTECHAROBJECT;
  1059.  
  1060.     HRESULT GetValue
  1061.     (
  1062.         [out, retval] JAVA_CHAR *pvalue
  1063.     );
  1064.  
  1065.     HRESULT SetValue
  1066.     (
  1067.         [in] JAVA_CHAR value
  1068.     );
  1069. }
  1070.  
  1071.  
  1072. [
  1073.     object,
  1074.     uuid(275d9dbb-5ff5-11cf-a5e1-00aa006bbf16)
  1075. ]
  1076.  
  1077. interface IRemoteClassObject : IRemoteContainerObject
  1078. {
  1079.     typedef IRemoteClassObject *LPREMOTECLASSOBJECT;
  1080.  
  1081.     HRESULT GetDerivedMostType
  1082.     (
  1083.         [out, retval] IRemoteClassField **ppDerivedMostField
  1084.     );
  1085. }
  1086.  
  1087.  
  1088. [
  1089.     object,
  1090.     uuid(275d9db5-5ff5-11cf-a5e1-00aa006bbf16)
  1091. ]
  1092.  
  1093. interface IRemoteContainerObject : IRemoteObject
  1094. {
  1095.     typedef IRemoteContainerObject *LPREMOTECONTAINEROBJECT;
  1096.  
  1097.     HRESULT GetFieldObject
  1098.     (
  1099.         [in, unique] IRemoteField *pField,
  1100.         [out, retval] IRemoteObject **ppFieldObject
  1101.     );
  1102. }
  1103.  
  1104.  
  1105. [
  1106.     object,
  1107.     uuid(275d9db6-5ff5-11cf-a5e1-00aa006bbf16)
  1108. ]
  1109.  
  1110. interface IRemoteDoubleObject : IRemoteObject
  1111. {
  1112.     typedef IRemoteDoubleObject *LPREMOTEDOUBLEOBJECT;
  1113.  
  1114.     HRESULT GetValue
  1115.     (
  1116.         [out, retval] JAVA_DOUBLE *pvalue
  1117.     );
  1118.  
  1119.     HRESULT SetValue
  1120.     (
  1121.         [in] JAVA_DOUBLE *pvalue
  1122.     );
  1123. }
  1124.  
  1125.  
  1126. [
  1127.     object,
  1128.     uuid(275d9db7-5ff5-11cf-a5e1-00aa006bbf16)
  1129. ]
  1130.  
  1131. interface IRemoteFloatObject : IRemoteObject
  1132. {
  1133.     typedef IRemoteFloatObject *LPREMOTEFLOATOBJECT;
  1134.  
  1135.     HRESULT GetValue
  1136.     (
  1137.         [out, retval] JAVA_FLOAT *pvalue
  1138.     );
  1139.  
  1140.     HRESULT SetValue
  1141.     (
  1142.         [in] JAVA_FLOAT *pvalue
  1143.     );
  1144. }
  1145.  
  1146.  
  1147. [
  1148.     object,
  1149.     uuid(275d9db8-5ff5-11cf-a5e1-00aa006bbf16)
  1150. ]
  1151.  
  1152. interface IRemoteIntObject : IRemoteObject
  1153. {
  1154.     typedef IRemoteIntObject *LPREMOTEINTOBJECT;
  1155.  
  1156.     HRESULT GetValue
  1157.     (
  1158.         [out, retval] JAVA_INT *pvalue
  1159.     );
  1160.  
  1161.     HRESULT SetValue
  1162.     (
  1163.         [in] JAVA_INT value
  1164.     );
  1165. }
  1166.  
  1167.  
  1168. [
  1169.     object,
  1170.     uuid(275d9db9-5ff5-11cf-a5e1-00aa006bbf16)
  1171. ]
  1172.  
  1173. interface IRemoteLongObject : IRemoteObject
  1174. {
  1175.     typedef IRemoteLongObject *LPREMOTELONGOBJECT;
  1176.  
  1177.     HRESULT GetValue
  1178.     (
  1179.         [out, retval] JAVA_LONG *pvalue
  1180.     );
  1181.  
  1182.     HRESULT SetValue
  1183.     (
  1184.         [in] JAVA_LONG value
  1185.     );
  1186. }
  1187.  
  1188.  
  1189. [
  1190.     object,
  1191.     uuid(275d9dba-5ff5-11cf-a5e1-00aa006bbf16)
  1192. ]
  1193.  
  1194. interface IRemoteShortObject : IRemoteObject
  1195. {
  1196.     typedef IRemoteShortObject *LPREMOTESHORTOBJECT;
  1197.  
  1198.     HRESULT GetValue
  1199.     (
  1200.         [out, retval] JAVA_SHORT *pvalue
  1201.     );
  1202.  
  1203.     HRESULT SetValue
  1204.     (
  1205.         [in] JAVA_SHORT value
  1206.     );
  1207. }
  1208.  
  1209.  
  1210. [
  1211.     object,
  1212.     uuid(275d9d90-5ff5-11cf-a5e1-00aa006bbf16)
  1213. ]
  1214.  
  1215. interface IRemoteStackFrame : IUnknown
  1216. {
  1217.     typedef IRemoteStackFrame *LPREMOTESTACKOBJECT;
  1218.  
  1219.     HRESULT GetCallingFrame
  1220.     (
  1221.         [out, retval] IRemoteStackFrame **ppCallingFrame
  1222.     );
  1223.  
  1224.     HRESULT GetMethodObject
  1225.     (
  1226.         [out, retval] IRemoteContainerObject **ppMethodObject
  1227.     );
  1228.  
  1229.     HRESULT GetPC
  1230.     (
  1231.         [out, retval] ULONG *offPC
  1232.     );
  1233.  
  1234.     HRESULT SetPC
  1235.     (
  1236.         [in] ULONG offPC
  1237.     );
  1238.  
  1239.     //
  1240.     // stack frame kinds
  1241.     //
  1242.     enum
  1243.     {
  1244.         FRAME_KIND_INVALID          = 0x00,
  1245.         FRAME_KIND_INTERPRETED      = 0x01,
  1246.         FRAME_KIND_NATIVE           = 0x02,
  1247.         FRAME_KIND_JIT_COMPILED     = 0x03,
  1248.         FRAME_KIND_FAST_INTERPRETED = 0x04,
  1249.         FRAME_KIND_COM              = 0x05,
  1250.     };
  1251.     typedef ULONG FRAMEKIND;
  1252.  
  1253.     HRESULT GetKind
  1254.     (
  1255.         [out, retval] FRAMEKIND *pfk
  1256.     );
  1257. }
  1258.  
  1259.  
  1260. [
  1261.     object,
  1262.     uuid(DA4BA03E-A641-11d0-B83D-00A0244A1DE2)
  1263. ]
  1264.  
  1265. interface IRemoteStackFrameEx : IRemoteStackFrame
  1266. {
  1267.     HRESULT GetStackRange
  1268.     (
  1269.         [out] ULONG *pdwMin,
  1270.         [out] ULONG *pdwLim
  1271.     );
  1272.  
  1273.     HRESULT GetRealPC
  1274.     (
  1275.         [out, retval] ULONG *offPC
  1276.     );
  1277.  
  1278.     // One method location -> one point of execution.
  1279.     HRESULT GetMethodLocation
  1280.     (
  1281.         [out, retval] IMethodLocation **ppiml
  1282.     );
  1283. }
  1284.  
  1285.  
  1286. [
  1287.     object,
  1288.     uuid(275d9d92-5ff5-11cf-a5e1-00aa006bbf16)
  1289. ]
  1290.  
  1291. interface IRemoteThreadGroup : IUnknown
  1292. {
  1293.     typedef IRemoteThreadGroup *LPREMOTETHREADGROUP;
  1294.  
  1295.     HRESULT GetName
  1296.     (
  1297.         [out, retval] LPOLESTR *ppszName
  1298.     );
  1299.  
  1300.     HRESULT GetThreads
  1301.     (
  1302.         [out, retval] IJavaEnumRemoteThread **ppEnum
  1303.     );
  1304.  
  1305.     HRESULT GetThreadGroups
  1306.     (
  1307.         [out, retval] IJavaEnumRemoteThreadGroup **ppEnum
  1308.     );
  1309. }
  1310.  
  1311.  
  1312. [
  1313.     object,
  1314.     uuid(497C2740-6628-11d1-BA38-006008039BF0)
  1315. ]
  1316. interface IRemoteThreadGroupEx : IRemoteThreadGroup
  1317. {
  1318.     HRESULT GetParent
  1319.     (
  1320.         [out, retval] IRemoteThreadGroupEx **ppParentGroup
  1321.     );
  1322. }
  1323.  
  1324.  
  1325. [
  1326.     object,
  1327.     uuid(275d9da4-5ff5-11cf-a5e1-00aa006bbf16)
  1328. ]
  1329.  
  1330. interface IEnumRemoteThreadGroup : IUnknown
  1331. {
  1332.     typedef IEnumRemoteThreadGroup *LPENUMREMOTETHREADGROUP;
  1333.  
  1334.     HRESULT Next
  1335.     (
  1336.         [in] ULONG celt,
  1337.         [out, size_is(celt), length_is(*pceltFetched)] IRemoteThreadGroup *rgelt[],
  1338.         [out] ULONG *pceltFetched
  1339.     );
  1340.  
  1341.     HRESULT Skip
  1342.     (
  1343.         [in] ULONG celt
  1344.     );
  1345.  
  1346.     HRESULT Reset
  1347.     (
  1348.     );
  1349.  
  1350.     HRESULT Clone
  1351.     (
  1352.         [out, retval] IJavaEnumRemoteThreadGroup **ppEnum
  1353.     );
  1354. }
  1355.  
  1356.  
  1357. [
  1358.     object,
  1359.     uuid(CB33C08E-16E6-11d0-ACBB-00401C608501)
  1360. ]
  1361.  
  1362. interface IJavaEnumRemoteThreadGroup : IEnumRemoteThreadGroup
  1363. {
  1364.     HRESULT GetNext
  1365.     (
  1366.         [out, retval] IRemoteThreadGroup **ppirtg
  1367.     );
  1368. }
  1369.  
  1370.  
  1371. [
  1372.     object,
  1373.     uuid(275d9d91-5ff5-11cf-a5e1-00aa006bbf16)
  1374. ]
  1375.  
  1376. interface IRemoteThread : IUnknown
  1377. {
  1378.     typedef IRemoteThread *LPREMOTETHREAD;
  1379.  
  1380.     HRESULT GetName
  1381.     (
  1382.         [out, retval] LPOLESTR *ppszName
  1383.     );
  1384.  
  1385.     HRESULT GetCurrentFrame
  1386.     (
  1387.         [out, retval] IRemoteStackFrame **ppCurrentFrame
  1388.     );
  1389.  
  1390.     HRESULT GetThreadGroup
  1391.     (
  1392.         [out, retval] IRemoteThreadGroup **ppThreadGroup
  1393.     );
  1394.  
  1395.     HRESULT Go
  1396.     (
  1397.     );
  1398.  
  1399.     HRESULT Step
  1400.     (
  1401.     );
  1402.  
  1403.     HRESULT StepIn
  1404.     (
  1405.     );
  1406.  
  1407.     HRESULT StepOut
  1408.     (
  1409.     );
  1410.  
  1411.     HRESULT RangeStep
  1412.     (
  1413.         [in] ULONG offStart,
  1414.         [in] ULONG offEnd
  1415.     );
  1416.  
  1417.     HRESULT RangeStepIn
  1418.     (
  1419.         [in] ULONG offStart,
  1420.         [in] ULONG offEnd
  1421.     );
  1422.  
  1423.     HRESULT Destroy
  1424.     (
  1425.     );
  1426.  
  1427.     HRESULT Suspend
  1428.     (
  1429.     );
  1430.  
  1431.     HRESULT Resume
  1432.     (
  1433.     );
  1434.  
  1435.     HRESULT GetSuspendCount
  1436.     (
  1437.         [out, retval] ULONG *pcSuspend
  1438.     );
  1439. }
  1440.  
  1441.  
  1442. [
  1443.     object,
  1444.     uuid(D38AFAE0-A611-11d0-B83D-00A0244A1DE2)
  1445. ]
  1446.  
  1447. interface IRemoteThreadEx : IRemoteThread
  1448. {
  1449.     HRESULT GetThreadId
  1450.     (
  1451.         [out, retval] ULONG *pdwTid
  1452.     );
  1453.  
  1454.     HRESULT GetStackFrames
  1455.     (
  1456.         [out, retval] IEnumRemoteStackFrames **ppEnum
  1457.     );
  1458.  
  1459.     HRESULT IsStartBlock
  1460.     (
  1461.         [in] IRemoteStackFrame *pFrame
  1462.     );
  1463.  
  1464.     HRESULT WatchForStep
  1465.     (
  1466.         [in] BOOL fWatch,
  1467.         [in] ULONG dwStack
  1468.     );
  1469.  
  1470.     HRESULT Continue
  1471.     (
  1472.     );
  1473.  
  1474.     HRESULT AllowExecution
  1475.     (
  1476.         [in] BOOL fAllow
  1477.     );
  1478.  
  1479.     HRESULT PassExceptionToDebuggee
  1480.     (
  1481.         [in] BOOL fPass
  1482.     );
  1483.  
  1484.     HRESULT ClearExecutionState
  1485.     (
  1486.     );
  1487.  
  1488.     HRESULT WithdrawFromThreadBank
  1489.     (
  1490.     );
  1491. }
  1492.  
  1493.  
  1494. [
  1495.     object,
  1496.     uuid(275d9da3-5ff5-11cf-a5e1-00aa006bbf16)
  1497. ]
  1498.  
  1499. interface IEnumRemoteThread : IUnknown
  1500. {
  1501.     typedef IEnumRemoteThread *LPENUMREMOTETHREAD;
  1502.  
  1503.     HRESULT Next
  1504.     (
  1505.         [in] ULONG celt,
  1506.         [out, size_is(celt), length_is(*pceltFetched)] IRemoteThread *rgelt[],
  1507.         [out] ULONG *pceltFetched
  1508.     );
  1509.  
  1510.     HRESULT Skip
  1511.     (
  1512.         [in] ULONG celt
  1513.     );
  1514.  
  1515.     HRESULT Reset
  1516.     (
  1517.     );
  1518.  
  1519.     HRESULT Clone
  1520.     (
  1521.         [out, retval] IJavaEnumRemoteThread **ppEnum
  1522.     );
  1523. }
  1524.  
  1525.  
  1526. [
  1527.     object,
  1528.     uuid(CB33C08F-16E6-11d0-ACBB-00401C608501)
  1529. ]
  1530.  
  1531. interface IJavaEnumRemoteThread : IEnumRemoteThread
  1532. {
  1533.     HRESULT GetNext
  1534.     (
  1535.         [out, retval] IRemoteThread **ppt
  1536.     );
  1537. }
  1538.  
  1539.  
  1540. [
  1541.     object,
  1542.     uuid(275d9d94-5ff5-11cf-a5e1-00aa006bbf16)
  1543. ]
  1544.  
  1545. interface IRemoteProcessCallback : IUnknown
  1546. {
  1547.     typedef IRemoteProcessCallback *LPREMOTEPROCESSCALLBACK;
  1548.  
  1549.     enum
  1550.     {
  1551.         EXCEPTION_KIND_FIRST_CHANCE     = 0x0001,
  1552.         EXCEPTION_KIND_LAST_CHANCE      = 0x0002,
  1553.     };
  1554.     typedef ULONG EXCEPTIONKIND;
  1555.  
  1556.  
  1557.     HRESULT DebugStringEvent
  1558.     (
  1559.         [in, unique] IRemoteThread *pThread,
  1560.         [in] LPCOLESTR pszDebugString
  1561.     );
  1562.  
  1563.     HRESULT CodeBreakpointEvent
  1564.     (
  1565.         [in, unique] IRemoteThread *pThread
  1566.     );
  1567.  
  1568.     HRESULT DataBreakpointEvent
  1569.     (
  1570.         [in, unique] IRemoteThread *pThread,
  1571.         [in, unique] IRemoteObject *pObject
  1572.     );
  1573.  
  1574.     HRESULT ExceptionEvent
  1575.     (
  1576.         [in, unique] IRemoteThread *pThread,
  1577.         [in, unique] IRemoteClassField *pExceptionClass,
  1578.         [in] EXCEPTIONKIND exceptionKind
  1579.     );
  1580.  
  1581.     HRESULT StepEvent
  1582.     (
  1583.         [in, unique] IRemoteThread *pThread
  1584.     );
  1585.  
  1586.     HRESULT CanStopEvent
  1587.     (
  1588.         [in, unique] IRemoteThread *pThread
  1589.     );
  1590.  
  1591.     HRESULT BreakEvent
  1592.     (
  1593.         [in, unique] IRemoteThread *pThread
  1594.     );
  1595.  
  1596.     HRESULT ThreadCreateEvent
  1597.     (
  1598.         [in, unique] IRemoteThread *pThread
  1599.     );
  1600.  
  1601.     HRESULT ThreadDestroyEvent
  1602.     (
  1603.         [in, unique] IRemoteThread *pThread
  1604.     );
  1605.  
  1606.     HRESULT ThreadGroupCreateEvent
  1607.     (
  1608.         [in, unique] IRemoteThread *pThread,
  1609.         [in, unique] IRemoteThreadGroup *pThreadGroup
  1610.     );
  1611.  
  1612.     HRESULT ThreadGroupDestroyEvent
  1613.     (
  1614.         [in, unique] IRemoteThread *pThread,
  1615.         [in, unique] IRemoteThreadGroup *pThreadGroup
  1616.     );
  1617.  
  1618.     HRESULT ClassLoadEvent
  1619.     (
  1620.         [in, unique] IRemoteThread *pThread,
  1621.         [in, unique] IRemoteClassField *pClassType
  1622.     );
  1623.  
  1624.     HRESULT ClassUnloadEvent
  1625.     (
  1626.         [in, unique] IRemoteThread *pThread,
  1627.         [in, unique] IRemoteClassField *pClassType
  1628.     );
  1629.  
  1630.     HRESULT ProcessDestroyEvent
  1631.     (
  1632.         [in, unique] IRemoteThread *pThread
  1633.     );
  1634.  
  1635.     HRESULT TraceEvent
  1636.     (
  1637.         [in, unique] IRemoteThread *pThread
  1638.     );
  1639.  
  1640.     HRESULT LoadCompleteEvent
  1641.     (
  1642.         [in, unique] IRemoteThread *pThread
  1643.     );
  1644. }
  1645.  
  1646.  
  1647. [
  1648.     object,
  1649.     uuid(F3C3EAC2-BB3F-11d0-B840-00A0244A1DE2)
  1650. ]
  1651.  
  1652. interface IRemoteProcessCallbackEx : IRemoteProcessCallback
  1653. {
  1654.     typedef IRemoteProcessCallbackEx *LPREMOTEPROCESSCALLBACKEX;
  1655.  
  1656.     HRESULT StartClassEvent
  1657.     (
  1658.         [in] LPCOLESTR pcstrStartClass
  1659.     );
  1660.  
  1661.     HRESULT CodeBreakpointEventEx
  1662.     (
  1663.         [in, unique] IRemoteThread *pirt,
  1664.         [in, unique] IMethodLocation *piml
  1665.     );
  1666. }
  1667.  
  1668.  
  1669. [
  1670.     object,
  1671.     uuid(E65A0530-F975-11d1-B04A-006008039BF0)
  1672. ]
  1673. interface IRemoteProcessCallbackEx2 : IRemoteProcessCallbackEx
  1674. {
  1675.     HRESULT ExceptionEventEx
  1676.     (
  1677.         [in, unique] IRemoteThread *pThread,
  1678.         [in, unique] IRemoteClassField *pExceptionClass,
  1679.         [in] EXCEPTIONKIND exceptionKind,
  1680.         [in, unique] IRemoteClassObject *pExceptionObject
  1681.     );
  1682. }
  1683.  
  1684.  
  1685. [
  1686.     object,
  1687.     uuid(275d9d93-5ff5-11cf-a5e1-00aa006bbf16)
  1688. ]
  1689.  
  1690. interface IRemoteProcess : IUnknown
  1691. {
  1692.     typedef IRemoteProcess *LPREMOTEPROCESS;
  1693.  
  1694.     HRESULT RegisterCallback
  1695.     (
  1696.         [in, unique] IRemoteProcessCallback *pCallback
  1697.     );
  1698.  
  1699.     HRESULT Detach
  1700.     (
  1701.     );
  1702.  
  1703.     HRESULT Break
  1704.     (
  1705.     );
  1706.  
  1707.     HRESULT GetGlobalContainerObject
  1708.     (
  1709.         [out, retval] IRemoteContainerObject **ppGlobalContainerObject
  1710.     );
  1711.  
  1712.     HRESULT FindClass
  1713.     (
  1714.         [in] LPCOLESTR pszClassName,
  1715.         [out, retval] IRemoteClassField **ppClassType
  1716.     );
  1717.  
  1718.     HRESULT TraceMethods
  1719.     (
  1720.         [in] BOOL bTraceOn
  1721.     );
  1722.  
  1723.     HRESULT GetThreadGroups
  1724.     (
  1725.         [out, retval] IJavaEnumRemoteThreadGroup **ppEnum
  1726.     );
  1727. }
  1728.  
  1729.  
  1730. [
  1731.     object,
  1732.     uuid(275d9da5-5ff5-11cf-a5e1-00aa006bbf16)
  1733. ]
  1734.  
  1735. interface IEnumRemoteProcess : IUnknown
  1736. {
  1737.     typedef IEnumRemoteProcess *LPENUMREMOTEPROCESS;
  1738.  
  1739.     HRESULT Next
  1740.     (
  1741.         [in] ULONG celt,
  1742.         [out, size_is(celt), length_is(*pceltFetched)] IRemoteProcess *rgelt[],
  1743.         [out] ULONG *pceltFetched
  1744.     );
  1745.  
  1746.     HRESULT Skip
  1747.     (
  1748.         [in] ULONG celt
  1749.     );
  1750.  
  1751.     HRESULT Reset
  1752.     (
  1753.     );
  1754.  
  1755.     HRESULT Clone
  1756.     (
  1757.         [out, retval] IJavaEnumRemoteProcess **ppEnum
  1758.     );
  1759. }
  1760.  
  1761.  
  1762. [
  1763.     object,
  1764.     uuid(CB33C090-16E6-11d0-ACBB-00401C608501)
  1765. ]
  1766.  
  1767. interface IJavaEnumRemoteProcess : IEnumRemoteProcess
  1768. {
  1769.     HRESULT GetNext
  1770.     (
  1771.         [out, retval] IRemoteProcess **ppirp
  1772.     );
  1773. }
  1774.  
  1775.  
  1776. [
  1777.     object,
  1778.     uuid(275d9d61-5ff5-11cf-a5e1-00aa006bbf16)
  1779. ]
  1780.  
  1781. interface IRemoteDebugManagerCallback : IUnknown
  1782. {
  1783.     typedef IRemoteDebugManagerCallback *LPREMOTEDEBUGMANAGERCALLBACK;
  1784.  
  1785.     HRESULT ProcessCreateEvent
  1786.     (
  1787.         [in, unique] IRemoteProcess *pProcessNew,
  1788.         [in, unique] IRemoteProcess *pProcessParent
  1789.     );
  1790. }
  1791.  
  1792.  
  1793. [
  1794.     object,
  1795.     uuid(E3732322-2E0D-11d1-B069-00A0244A1DE2)
  1796. ]
  1797.  
  1798. interface IRemoteDebugManagerCallbackEx : IRemoteDebugManagerCallback
  1799. {
  1800.     HRESULT StartClassEvent
  1801.     (
  1802.         [in] LPCOLESTR pcstrStartClass
  1803.     );
  1804. }
  1805.  
  1806.  
  1807. [
  1808.     object,
  1809.     uuid(275d9d60-5ff5-11cf-a5e1-00aa006bbf16)
  1810. ]
  1811.  
  1812. interface IRemoteDebugManager : IUnknown
  1813. {
  1814.     typedef IRemoteDebugManager *LPREMOTEDEBUGMANAGER;
  1815.  
  1816.     HRESULT RegisterCallback
  1817.     (
  1818.         [in, unique] IRemoteDebugManagerCallback *pCallback
  1819.     );
  1820.  
  1821.     HRESULT Detach
  1822.     (
  1823.     );
  1824.  
  1825.     HRESULT GetActiveProcesses
  1826.     (
  1827.         [out, retval] IJavaEnumRemoteProcess **ppEnum
  1828.     );
  1829.  
  1830.     HRESULT RequestCreateEvent
  1831.     (
  1832.         [in] LPCOLESTR pszProcessName,
  1833.         [in] DWORD dwParentProcessId
  1834.     );
  1835. }
  1836.  
  1837.  
  1838. [
  1839.     object,
  1840.     uuid(275d9dc0-5ff5-11cf-a5e1-00aa006bbf16)
  1841. ]
  1842.  
  1843. interface IJavaDebugManager : IUnknown
  1844. {
  1845.     HRESULT RegisterRemoteDebugManager
  1846.     (
  1847.         [in, unique] IRemoteDebugManager *pirdm,
  1848.         [in] DWORD dwProcessID
  1849.     );
  1850.  
  1851.     HRESULT Detach
  1852.     (
  1853.     );
  1854. }
  1855.  
  1856.  
  1857. [
  1858.     object,
  1859.     uuid(50656CD0-063E-11d2-B04F-006008039BF0)
  1860. ]
  1861. interface IJITAttachDebugger : IUnknown
  1862. {
  1863.     HRESULT JITAttach
  1864.     (
  1865.         [in] IRemoteProcess *pRunningProcess,
  1866.         [in] IRemoteThread *pThread,
  1867.         [in] IRemoteClassObject *pExceptionObject
  1868.     );
  1869. }
  1870.  
  1871.  
  1872. [
  1873.     object,
  1874.     uuid(8F20BA80-D239-11d0-B84F-00A0244A1DE2)
  1875. ]
  1876.  
  1877. interface IEnumRemoteStackFrames : IUnknown
  1878. {
  1879.     HRESULT Next
  1880.     (
  1881.         [in] ULONG celt,
  1882.         [out, size_is(celt), length_is(*pceltFetched)] IRemoteStackFrame *rgelt[],
  1883.         [out] ULONG *pceltFetched
  1884.     );
  1885.  
  1886.     HRESULT Skip
  1887.     (
  1888.         [in] ULONG celt
  1889.     );
  1890.  
  1891.     HRESULT Reset
  1892.     (
  1893.     );
  1894.  
  1895.     HRESULT Clone
  1896.     (
  1897.         [out, retval] IEnumRemoteStackFrames **ppEnum
  1898.     );
  1899.  
  1900.     HRESULT GetCount
  1901.     (
  1902.         [out, retval] ULONG *pcelt
  1903.     );
  1904. }
  1905.  
  1906.  
  1907. #ifndef JAVAIFCS
  1908. // Force MIDL to generate a CLSID for RemoteJavaDebugManager.
  1909. [
  1910.     uuid(BCB909E1-DFAB-11d1-A3E9-00C04FB68D0E)
  1911. ]
  1912. library JavaDebuggingLibrary
  1913. {
  1914. #endif
  1915.     [
  1916.         uuid(275d9d50-5ff5-11cf-a5e1-00aa006bbf16)
  1917.     ]
  1918.     coclass RemoteJavaDebugManager
  1919.     {
  1920.         interface IRemoteDebugManager;
  1921.     }
  1922. #ifndef JAVAIFCS
  1923. }
  1924. #endif
  1925.  
  1926.  
  1927. // Supports COM object identity for equality.
  1928. [
  1929.     object,
  1930.     uuid(6E2E7A21-C9CE-11d1-B040-006008039BF0)
  1931. ]
  1932. interface IMethodLocation : IUnknown
  1933. {
  1934.     HRESULT GetMethod
  1935.     (
  1936.         [out, retval] IRemoteMethodField **ppirmf
  1937.     );
  1938.  
  1939.     // Many method locations -> one base PC.
  1940.     HRESULT GetBasePC
  1941.     (
  1942.         [out, retval] ULONG *pulPC
  1943.     );
  1944.  
  1945.     HRESULT SetBreakpoint
  1946.     (
  1947.     );
  1948.  
  1949.     HRESULT ClearBreakpoint
  1950.     (
  1951.     );
  1952. }
  1953.  
  1954. [
  1955.     object,
  1956.     uuid(6E2E7A22-C9CE-11d1-B040-006008039BF0)
  1957. ]
  1958. interface IEnumCodeBreakpoints : IUnknown
  1959. {
  1960.     HRESULT Next
  1961.     (
  1962.         [in] ULONG ulc,
  1963.         [out, size_is(ulc), length_is(*pulcFetched)] IMethodLocation **ppiml,
  1964.         [out] ULONG *pulcFetched
  1965.     );
  1966.  
  1967.     HRESULT Skip
  1968.     (
  1969.         [in] ULONG ulc
  1970.     );
  1971.  
  1972.     HRESULT Reset
  1973.     (
  1974.     );
  1975.  
  1976.     HRESULT Clone
  1977.     (
  1978.         [out, retval] IEnumCodeBreakpoints **ppiecbp
  1979.     );
  1980.  
  1981.     HRESULT GetCount
  1982.     (
  1983.         [out, retval] ULONG *pulc
  1984.     );
  1985. }
  1986.  
  1987.