home *** CD-ROM | disk | FTP | other *** search
/ Chip Special: HTML & Java / Chip-Special_1997-01_HTML-a-Java.bin / javasdk / sdk-java.exe / SDKJava.cab / Samples / Debugger / JavaDbg.idl < prev    next >
Encoding:
Text File  |  1996-10-10  |  23.6 KB  |  1,307 lines

  1. /*++
  2.  
  3. Copyright (c) 1996  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     javadbg.idl
  8.  
  9. Abstract:
  10.  
  11.     Java debugging interface definitions.
  12.  
  13. --*/
  14.  
  15.  
  16. import "oleidl.idl";
  17.  
  18. interface IEnumLINEINFO;
  19. interface IEnumRemoteBooleanValue;
  20. interface IEnumRemoteByteValue;
  21. interface IEnumRemoteCharValue;
  22. interface IEnumRemoteDoubleValue;
  23. interface IEnumRemoteFloatValue;
  24. interface IEnumRemoteIntValue;
  25. interface IEnumRemoteLongValue;
  26. interface IEnumRemoteShortValue;
  27. interface IEnumRemoteField;
  28. interface IEnumRemoteObject;
  29. interface IEnumRemoteProcess;
  30. interface IEnumRemoteThread;
  31. interface IEnumRemoteThreadGroup;
  32. interface IEnumRemoteValue;
  33. interface IJavaDebugManager;
  34. interface IRemoteArrayField;
  35. interface IRemoteArrayObject;
  36. interface IRemoteBooleanObject;
  37. interface IRemoteByteObject;
  38. interface IRemoteCharObject;
  39. interface IRemoteClassField;
  40. interface IRemoteClassObject;
  41. interface IRemoteContainerField;
  42. interface IRemoteContainerObject;
  43. interface IRemoteDataField;
  44. interface IRemoteDebugManager;
  45. interface IRemoteDebugManagerCallback;
  46. interface IRemoteDoubleObject;
  47. interface IRemoteField;
  48. interface IRemoteFloatObject;
  49. interface IRemoteIntObject;
  50. interface IRemoteLongObject;
  51. interface IRemoteMethodField;
  52. interface IRemoteObject;
  53. interface IRemoteProcess;
  54. interface IRemoteProcessCallback;
  55. interface IRemoteShortObject;
  56. interface IRemoteStackFrame;
  57. interface IRemoteThread;
  58. interface IRemoteThreadGroup;
  59.  
  60. //
  61. // error codes
  62. //
  63. cpp_quote("// error codes")
  64. cpp_quote("//")
  65. cpp_quote("// errors returned by IRemoteContainer::GetFieldObject")
  66. cpp_quote("static const int E_FIELDOUTOFSCOPE       = MAKE_HRESULT(1, FACILITY_ITF, 0x01);")
  67. cpp_quote("static const int E_FIELDNOTINOBJECT      = MAKE_HRESULT(1, FACILITY_ITF, 0x02);")
  68. cpp_quote("static const int E_NOFIELDS              = MAKE_HRESULT(1, FACILITY_ITF, 0x03);")
  69. cpp_quote("static const int E_NULLOBJECTREF         = MAKE_HRESULT(1, FACILITY_ITF, 0x04);")
  70. cpp_quote("// errors returned by IRemoteProcess::FindClass")
  71. cpp_quote("static const int E_CLASSNOTFOUND         = MAKE_HRESULT(1, FACILITY_ITF, 0x10);")
  72. cpp_quote("static const int E_BADMETHOD             = MAKE_HRESULT(1, FACILITY_ITF, 0x20);")
  73.  
  74. [
  75.     object,
  76.     uuid(275d9da0-5ff5-11cf-a5e1-00aa006bbf16)
  77. ]
  78.  
  79. interface IEnumLINEINFO : IUnknown
  80. {
  81.     typedef IEnumLINEINFO *LPENUMLINEINFO;
  82.  
  83.     typedef struct tagLINEINFO
  84.     {
  85.         USHORT offPC;
  86.         USHORT iLine;
  87.     }
  88.     LINEINFO, *LPLINEINFO;
  89.  
  90.     HRESULT Next
  91.     (
  92.         [in] ULONG celt,
  93.         [out, size_is(celt), length_is(*pceltFetched)] LPLINEINFO rgelt,
  94.         [out] ULONG *pceltFetched
  95.     );
  96.  
  97.     HRESULT Skip
  98.     (
  99.         [in] ULONG celt
  100.     );
  101.  
  102.     HRESULT Reset
  103.     (
  104.     );
  105.  
  106.     HRESULT Clone
  107.     (
  108.         [out] IEnumLINEINFO **ppEnum
  109.     );
  110.  
  111.     HRESULT GetCount
  112.     (
  113.         [out] ULONG *pcelt
  114.     );
  115. }
  116.  
  117.  
  118. [
  119.     object,
  120.     uuid(275d9d80-5ff5-11cf-a5e1-00aa006bbf16)
  121. ]
  122.  
  123. interface IRemoteField : IUnknown
  124. {
  125.     typedef IRemoteField *LPREMOTEFIELD;
  126.  
  127.     HRESULT GetName
  128.     (
  129.         [out] LPOLESTR *ppszName
  130.     );
  131.  
  132.     //
  133.     // field kinds
  134.     //
  135.     enum
  136.     {
  137.         FIELD_KIND_DATA_OBJECT      = 0x0001,
  138.         FIELD_KIND_DATA_PRIMITIVE   = 0x0002,
  139.         FIELD_KIND_ARRAY            = 0x0004,
  140.         FIELD_KIND_CLASS            = 0x0008,
  141.         FIELD_KIND_METHOD           = 0x0010,
  142.         FIELD_KIND_LOCAL            = 0x1000,
  143.         FIELD_KIND_PARAM            = 0x2000,
  144.         FIELD_KIND_THIS             = 0x4000,
  145.     };
  146.     typedef ULONG FIELDKIND;
  147.  
  148.     HRESULT GetKind
  149.     (
  150.         [out] FIELDKIND *pfk
  151.     );
  152.  
  153.     HRESULT GetType
  154.     (
  155.         [out] IRemoteField **ppType
  156.     );
  157.  
  158.     HRESULT GetContainer
  159.     (
  160.         [out] IRemoteContainerField **ppContainer
  161.     );
  162.  
  163.     //
  164.     // Modifier flags
  165.     //
  166.     enum
  167.     {
  168.         FIELD_ACC_PUBLIC        = 0x0001,
  169.         FIELD_ACC_PRIVATE       = 0x0002,
  170.         FIELD_ACC_PROTECTED     = 0x0004,
  171.         FIELD_ACC_STATIC        = 0x0008,
  172.         FIELD_ACC_FINAL         = 0x0010,
  173.         FIELD_ACC_SYNCHRONIZED  = 0x0020,
  174.         FIELD_ACC_VOLATILE      = 0x0040,
  175.         FIELD_ACC_TRANSIENT     = 0x0080,
  176.         FIELD_ACC_NATIVE        = 0x0100,
  177.         FIELD_ACC_INTERFACE     = 0x0200,
  178.         FIELD_ACC_ABSTRACT      = 0x0400,
  179.     };
  180.     typedef ULONG FIELDMODIFIERS;
  181.  
  182.     HRESULT GetModifiers
  183.     (
  184.         [out] FIELDMODIFIERS *pulModifiers
  185.     );
  186. }
  187.  
  188.  
  189. [
  190.     object,
  191.     uuid(275d9da1-5ff5-11cf-a5e1-00aa006bbf16)
  192. ]
  193.  
  194. interface IEnumRemoteField : IUnknown
  195. {
  196.     typedef IEnumRemoteField *LPENUMREMOTEFIELD;
  197.  
  198.     HRESULT Next
  199.     (
  200.         [in] ULONG celt,
  201.         [out, size_is(celt), length_is(*pceltFetched)] IRemoteField *rgelt[],
  202.         [out] ULONG *pceltFetched
  203.     );
  204.  
  205.     HRESULT Skip
  206.     (
  207.         [in] ULONG celt
  208.     );
  209.  
  210.     HRESULT Reset
  211.     (
  212.     );
  213.  
  214.     HRESULT Clone
  215.     (
  216.         [out] IEnumRemoteField **ppEnum
  217.     );
  218.  
  219.     HRESULT GetCount
  220.     (
  221.         [out] ULONG *pcelt
  222.     );
  223. }
  224.  
  225.  
  226. [
  227.     object,
  228.     uuid(275d9d81-5ff5-11cf-a5e1-00aa006bbf16)
  229. ]
  230.  
  231. interface IRemoteDataField : IRemoteField
  232. {
  233.     typedef IRemoteDataField *LPREMOTEDATAFIELD;
  234. }
  235.  
  236.  
  237. [
  238.     object,
  239.     uuid(275d9d82-5ff5-11cf-a5e1-00aa006bbf16)
  240. ]
  241.  
  242. interface IRemoteArrayField : IRemoteDataField
  243. {
  244.     typedef IRemoteArrayField *LPREMOTEARRAYFIELD;
  245.  
  246.     HRESULT GetSize
  247.     (
  248.         [out] ULONG *pcElements
  249.     );
  250. }
  251.  
  252.  
  253. [
  254.     object,
  255.     uuid(275d9d83-5ff5-11cf-a5e1-00aa006bbf16)
  256. ]
  257.  
  258. interface IRemoteContainerField : IRemoteField
  259. {
  260.     typedef IRemoteContainerField *LPREMOTECONTAINERFIELD;
  261.  
  262.     HRESULT GetFields
  263.     (
  264.         [out] IEnumRemoteField **ppEnum,
  265.         [in] FIELDKIND ulKind,
  266.         [in] FIELDMODIFIERS ulModifiers,
  267.         [in, unique] LPCOLESTR lpcszName
  268.     );
  269. }
  270.  
  271.  
  272. [
  273.     object,
  274.     uuid(275d9d84-5ff5-11cf-a5e1-00aa006bbf16)
  275. ]
  276.  
  277. interface IRemoteMethodField : IRemoteContainerField
  278. {
  279.     typedef IRemoteMethodField *LPREMOTEMETHODFIELD;
  280.  
  281.     HRESULT SetBreakpoint
  282.     (
  283.         [in] ULONG offPC
  284.     );
  285.  
  286.     HRESULT ClearBreakpoint
  287.     (
  288.         [in] ULONG offPC
  289.     );
  290.  
  291.     HRESULT GetLineInfo
  292.     (
  293.         [out] IEnumLINEINFO **ppEnum
  294.     );
  295.  
  296.     HRESULT GetBytes
  297.     (
  298.         [out] ILockBytes **ppLockBytes
  299.     );
  300.  
  301.     HRESULT GetScope
  302.     (
  303.         [in, unique] IRemoteField *pField,
  304.         [out] ULONG *poffStart,
  305.         [out] ULONG *pcbScope
  306.     );
  307.  
  308.     HRESULT GetIndexedField
  309.     (
  310.         [in] ULONG slot,
  311.         [in] ULONG offPC,
  312.         [out] IRemoteField **ppField
  313.     );
  314. }
  315.  
  316.  
  317. [
  318.     object,
  319.     uuid(275d9d85-5ff5-11cf-a5e1-00aa006bbf16)
  320. ]
  321.  
  322. interface IRemoteClassField : IRemoteContainerField
  323. {
  324.     typedef IRemoteClassField *LPREMOTECLASSFIELD;
  325.  
  326.     //
  327.     // Constant pool tags
  328.     //
  329.     enum
  330.     {
  331.         CP_CONSTANT_UTF8                = 1,
  332.         CP_CONSTANT_UNICODE             = 2,
  333.         CP_CONSTANT_INTEGER             = 3,
  334.         CP_CONSTANT_FLOAT               = 4,
  335.         CP_CONSTANT_LONG                = 5,
  336.         CP_CONSTANT_DOUBLE              = 6,
  337.         CP_CONSTANT_CLASS               = 7,
  338.         CP_CONSTANT_STRING              = 8,
  339.         CP_CONSTANT_FIELDREF            = 9,
  340.         CP_CONSTANT_METHODREF           = 10,
  341.         CP_CONSTANT_INTERFACEMETHODREF  = 11,
  342.         CP_CONSTANT_NAMEANDTYPE         = 12
  343.     };
  344.  
  345.     HRESULT GetFileName
  346.     (
  347.         [out] LPOLESTR *ppszFileName
  348.     );
  349.  
  350.     HRESULT GetSourceFileName
  351.     (
  352.         [out] LPOLESTR *ppszSourceFileName
  353.     );
  354.  
  355.     HRESULT GetSuperclass
  356.     (
  357.         [out] IRemoteClassField **ppSuperclass
  358.     );
  359.  
  360.     HRESULT GetInterfaces
  361.     (
  362.         [out] IEnumRemoteField **ppEnum
  363.     );
  364.  
  365.     HRESULT GetConstantPoolItem
  366.     (
  367.         [in] ULONG indexCP,
  368.         [out, size_is(,*plength)] BYTE **ppCPBytes,
  369.         [out] ULONG *plength
  370.     );
  371. }
  372.  
  373.  
  374. [
  375.     object,
  376.     uuid(275d9db0-5ff5-11cf-a5e1-00aa006bbf16)
  377. ]
  378.  
  379. interface IRemoteObject : IUnknown
  380. {
  381.     typedef IRemoteObject *LPREMOTEOBJECT;
  382.  
  383.     HRESULT GetType
  384.     (
  385.         [out] IRemoteField **ppType
  386.     );
  387.  
  388.     HRESULT SetBreakpoint
  389.     (
  390.     );
  391.  
  392.     HRESULT ClearBreakpoint
  393.     (
  394.     );
  395.  
  396.     //
  397.     // JAVA built-int types
  398.     //
  399.     typedef BYTE JAVA_BOOLEAN;
  400.     typedef signed char JAVA_BYTE;
  401.     typedef USHORT JAVA_CHAR;
  402.     typedef double JAVA_DOUBLE;
  403.     typedef float JAVA_FLOAT;
  404.     typedef LONG JAVA_INT;
  405.     typedef LONGLONG JAVA_LONG;
  406.     typedef SHORT JAVA_SHORT;
  407.     typedef LPOLESTR JAVA_STRING;
  408. }
  409.  
  410.  
  411. [
  412.     object,
  413.     uuid(275d9da2-5ff5-11cf-a5e1-00aa006bbf16)
  414. ]
  415.  
  416. interface IEnumRemoteObject : IUnknown
  417. {
  418.     typedef IEnumRemoteObject *LPENUMREMOTEOBJECT;
  419.  
  420.     HRESULT Next
  421.     (
  422.         [in] ULONG celt,
  423.         [out, size_is(celt), length_is(*pceltFetched)] IRemoteObject *rgelt[],
  424.         [out] ULONG *pceltFetched
  425.     );
  426.  
  427.     HRESULT Skip
  428.     (
  429.         [in] ULONG celt
  430.     );
  431.  
  432.     HRESULT Reset
  433.     (
  434.     );
  435.  
  436.     HRESULT Clone
  437.     (
  438.         [out] IEnumRemoteObject **ppEnum
  439.     );
  440.  
  441.     HRESULT GetCount
  442.     (
  443.         [out] ULONG *pcelt
  444.     );
  445. }
  446.  
  447.  
  448. [
  449.     object,
  450.     uuid(da0a7738-de8e-11cf-b3b3-00a0244a1dd2)
  451. ]
  452.  
  453. interface IEnumRemoteValue : IUnknown
  454. {
  455.     typedef IEnumRemoteValue *LPENUMREMOTEVALUE;
  456.  
  457.     HRESULT Skip
  458.     (
  459.         [in] ULONG celt
  460.     );
  461.  
  462.     HRESULT Reset
  463.     (
  464.     );
  465.  
  466.     HRESULT Clone
  467.     (
  468.         [out] IEnumRemoteValue **ppEnum
  469.     );
  470.  
  471.     HRESULT GetCount
  472.     (
  473.         [out] ULONG *pcelt
  474.     );
  475. }
  476.  
  477.  
  478. [
  479.     object,
  480.     uuid(282e2c9c-df62-11cf-b3b3-00a0244a1dd2)
  481. ]
  482.  
  483. interface IEnumRemoteBooleanValue : IEnumRemoteValue
  484. {
  485.     typedef IEnumRemoteBooleanValue *LPENUMREMOTEBOOLEANVALUE;
  486.  
  487.     HRESULT Next
  488.     (
  489.         [in] ULONG celt,
  490.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_BOOLEAN rgelt[],
  491.         [out] ULONG *pceltFetched
  492.     );
  493. }
  494.  
  495.  
  496. [
  497.     object,
  498.     uuid(29831ce2-df62-11cf-b3b3-00a0244a1dd2)
  499. ]
  500.  
  501. interface IEnumRemoteByteValue : IEnumRemoteValue
  502. {
  503.     typedef IEnumRemoteByteValue *LPENUMREMOTEBYTEVALUE;
  504.  
  505.     HRESULT Next
  506.     (
  507.         [in] ULONG celt,
  508.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_BYTE rgelt[],
  509.         [out] ULONG *pceltFetched
  510.     );
  511. }
  512.  
  513.  
  514. [
  515.     object,
  516.     uuid(c5d31048-de81-11cf-b3b3-00a0244a1dd2)
  517. ]
  518.  
  519. interface IEnumRemoteCharValue : IEnumRemoteValue
  520. {
  521.     typedef IEnumRemoteCharValue *LPENUMREMOTECHARVALUE;
  522.  
  523.     HRESULT Next
  524.     (
  525.         [in] ULONG celt,
  526.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_CHAR rgelt[],
  527.         [out] ULONG *pceltFetched
  528.     );
  529. }
  530.  
  531.  
  532. [
  533.     object,
  534.     uuid(9dc9ac24-df62-11cf-b3b3-00a0244a1dd2)
  535. ]
  536.  
  537. interface IEnumRemoteDoubleValue : IEnumRemoteValue
  538. {
  539.     typedef IEnumRemoteDoubleValue *LPENUMREMOTEDOUBLEVALUE;
  540.  
  541.     HRESULT Next
  542.     (
  543.         [in] ULONG celt,
  544.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_DOUBLE rgelt[],
  545.         [out] ULONG *pceltFetched
  546.     );
  547. }
  548.  
  549.  
  550. [
  551.     object,
  552.     uuid(a4c10b1c-df62-11cf-b3b3-00a0244a1dd2)
  553. ]
  554.  
  555. interface IEnumRemoteFloatValue : IEnumRemoteValue
  556. {
  557.     typedef IEnumRemoteFloatValue *LPENUMREMOTEFLOATVALUE;
  558.  
  559.     HRESULT Next
  560.     (
  561.         [in] ULONG celt,
  562.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_FLOAT rgelt[],
  563.         [out] ULONG *pceltFetched
  564.     );
  565. }
  566.  
  567.  
  568. [
  569.     object,
  570.     uuid(aa5eb51a-df62-11cf-b3b3-00a0244a1dd2)
  571. ]
  572.  
  573. interface IEnumRemoteIntValue : IEnumRemoteValue
  574. {
  575.     typedef IEnumRemoteIntValue *LPENUMREMOTEINTVALUE;
  576.  
  577.     HRESULT Next
  578.     (
  579.         [in] ULONG celt,
  580.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_INT rgelt[],
  581.         [out] ULONG *pceltFetched
  582.     );
  583. }
  584.  
  585.  
  586. [
  587.     object,
  588.     uuid(b208e470-df62-11cf-b3b3-00a0244a1dd2)
  589. ]
  590.  
  591. interface IEnumRemoteLongValue : IEnumRemoteValue
  592. {
  593.     typedef IEnumRemoteLongValue *LPENUMREMOTELONGVALUE;
  594.  
  595.     HRESULT Next
  596.     (
  597.         [in] ULONG celt,
  598.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_LONG rgelt[],
  599.         [out] ULONG *pceltFetched
  600.     );
  601. }
  602.  
  603.  
  604. [
  605.     object,
  606.     uuid(b74e576c-df62-11cf-b3b3-00a0244a1dd2)
  607. ]
  608.  
  609. interface IEnumRemoteShortValue : IEnumRemoteValue
  610. {
  611.     typedef IEnumRemoteShortValue *LPENUMREMOTESHORTVALUE;
  612.  
  613.     HRESULT Next
  614.     (
  615.         [in] ULONG celt,
  616.         [out, size_is(celt), length_is(*pceltFetched)] JAVA_SHORT rgelt[],
  617.         [out] ULONG *pceltFetched
  618.     );
  619. }
  620.  
  621.  
  622. [
  623.     object,
  624.     uuid(275d9db1-5ff5-11cf-a5e1-00aa006bbf16)
  625. ]
  626.  
  627. interface IRemoteArrayObject : IRemoteObject
  628. {
  629.     typedef IRemoteArrayObject *LPREMOTEARRAYOBJECT;
  630.  
  631.     HRESULT GetElementObjects
  632.     (
  633.         [out] IEnumRemoteObject **ppEnum
  634.     );
  635.  
  636.     HRESULT GetSize
  637.     (
  638.         [out] ULONG *pcElements
  639.     );
  640.  
  641.     HRESULT GetElementValues
  642.     (
  643.         [out] IEnumRemoteValue **ppEnum
  644.     );
  645. }
  646.  
  647.  
  648. [
  649.     object,
  650.     uuid(275d9db2-5ff5-11cf-a5e1-00aa006bbf16)
  651. ]
  652.  
  653. interface IRemoteBooleanObject : IRemoteObject
  654. {
  655.     typedef IRemoteBooleanObject *LPREMOTEBOOLEANOBJECT;
  656.  
  657.     HRESULT GetValue
  658.     (
  659.         [out] JAVA_BOOLEAN *pvalue
  660.     );
  661.  
  662.     HRESULT SetValue
  663.     (
  664.         [in] JAVA_BOOLEAN value
  665.     );
  666. }
  667.  
  668.  
  669. [
  670.     object,
  671.     uuid(275d9db3-5ff5-11cf-a5e1-00aa006bbf16)
  672. ]
  673.  
  674. interface IRemoteByteObject : IRemoteObject
  675. {
  676.     typedef IRemoteByteObject *LPREMOTEBYTEOBJECT;
  677.  
  678.     HRESULT GetValue
  679.     (
  680.         [out] JAVA_BYTE *pvalue
  681.     );
  682.  
  683.     HRESULT SetValue
  684.     (
  685.         [in] JAVA_BYTE value
  686.     );
  687. }
  688.  
  689.  
  690. [
  691.     object,
  692.     uuid(275d9db4-5ff5-11cf-a5e1-00aa006bbf16)
  693. ]
  694.  
  695. interface IRemoteCharObject : IRemoteObject
  696. {
  697.     typedef IRemoteCharObject *LPREMOTECHAROBJECT;
  698.  
  699.     HRESULT GetValue
  700.     (
  701.         [out] JAVA_CHAR *pvalue
  702.     );
  703.  
  704.     HRESULT SetValue
  705.     (
  706.         [in] JAVA_CHAR value
  707.     );
  708. }
  709.  
  710.  
  711. [
  712.     object,
  713.     uuid(275d9dbb-5ff5-11cf-a5e1-00aa006bbf16)
  714. ]
  715.  
  716. interface IRemoteClassObject : IRemoteContainerObject
  717. {
  718.     typedef IRemoteClassObject *LPREMOTECLASSOBJECT;
  719.  
  720.     HRESULT GetDerivedMostType
  721.     (
  722.         [out] IRemoteClassField **ppDerivedMostField
  723.     );
  724. }
  725.  
  726.  
  727. [
  728.     object,
  729.     uuid(275d9db5-5ff5-11cf-a5e1-00aa006bbf16)
  730. ]
  731.  
  732. interface IRemoteContainerObject : IRemoteObject
  733. {
  734.     typedef IRemoteContainerObject *LPREMOTECONTAINEROBJECT;
  735.  
  736.     HRESULT GetFieldObject
  737.     (
  738.         [in, unique] IRemoteField *pField,
  739.         [out] IRemoteObject **ppFieldObject
  740.     );
  741. }
  742.  
  743.  
  744. [
  745.     object,
  746.     uuid(275d9db6-5ff5-11cf-a5e1-00aa006bbf16)
  747. ]
  748.  
  749. interface IRemoteDoubleObject : IRemoteObject
  750. {
  751.     typedef IRemoteDoubleObject *LPREMOTEDOUBLEOBJECT;
  752.  
  753.     HRESULT GetValue
  754.     (
  755.         [out] JAVA_DOUBLE *pvalue
  756.     );
  757.  
  758.     HRESULT SetValue
  759.     (
  760.         [in] JAVA_DOUBLE *pvalue
  761.     );
  762. }
  763.  
  764.  
  765. [
  766.     object,
  767.     uuid(275d9db7-5ff5-11cf-a5e1-00aa006bbf16)
  768. ]
  769.  
  770. interface IRemoteFloatObject : IRemoteObject
  771. {
  772.     typedef IRemoteFloatObject *LPREMOTEFLOATOBJECT;
  773.  
  774.     HRESULT GetValue
  775.     (
  776.         [out] JAVA_FLOAT *pvalue
  777.     );
  778.  
  779.     HRESULT SetValue
  780.     (
  781.         [in] JAVA_FLOAT *pvalue
  782.     );
  783. }
  784.  
  785.  
  786. [
  787.     object,
  788.     uuid(275d9db8-5ff5-11cf-a5e1-00aa006bbf16)
  789. ]
  790.  
  791. interface IRemoteIntObject : IRemoteObject
  792. {
  793.     typedef IRemoteIntObject *LPREMOTEINTOBJECT;
  794.  
  795.     HRESULT GetValue
  796.     (
  797.         [out] JAVA_INT *pvalue
  798.     );
  799.  
  800.     HRESULT SetValue
  801.     (
  802.         [in] JAVA_INT value
  803.     );
  804. }
  805.  
  806.  
  807. [
  808.     object,
  809.     uuid(275d9db9-5ff5-11cf-a5e1-00aa006bbf16)
  810. ]
  811.  
  812. interface IRemoteLongObject : IRemoteObject
  813. {
  814.     typedef IRemoteLongObject *LPREMOTELONGOBJECT;
  815.  
  816.     HRESULT GetValue
  817.     (
  818.         [out] JAVA_LONG *pvalue
  819.     );
  820.  
  821.     HRESULT SetValue
  822.     (
  823.         [in] JAVA_LONG value
  824.     );
  825. }
  826.  
  827.  
  828. [
  829.     object,
  830.     uuid(275d9dba-5ff5-11cf-a5e1-00aa006bbf16)
  831. ]
  832.  
  833. interface IRemoteShortObject : IRemoteObject
  834. {
  835.     typedef IRemoteShortObject *LPREMOTESHORTOBJECT;
  836.  
  837.     HRESULT GetValue
  838.     (
  839.         [out] JAVA_SHORT *pvalue
  840.     );
  841.  
  842.     HRESULT SetValue
  843.     (
  844.         [in] JAVA_SHORT value
  845.     );
  846. }
  847.  
  848.  
  849. [
  850.     object,
  851.     uuid(275d9d90-5ff5-11cf-a5e1-00aa006bbf16)
  852. ]
  853.  
  854. interface IRemoteStackFrame : IUnknown
  855. {
  856.     typedef IRemoteStackFrame *LPREMOTESTACKOBJECT;
  857.  
  858.     HRESULT GetCallingFrame
  859.     (
  860.         [out] IRemoteStackFrame **ppCallingFrame
  861.     );
  862.  
  863.     HRESULT GetMethodObject
  864.     (
  865.         [out] IRemoteContainerObject **ppMethodObject
  866.     );
  867.  
  868.     HRESULT GetPC
  869.     (
  870.         [out] ULONG *offPC
  871.     );
  872.  
  873.     HRESULT SetPC
  874.     (
  875.         [in] ULONG offPC
  876.     );
  877.  
  878.     //
  879.     // stack frame kinds
  880.     //
  881.     enum
  882.     {
  883.         FRAME_KIND_INVALID          = 0x00,
  884.         FRAME_KIND_INTERPRETED      = 0x01,
  885.         FRAME_KIND_NATIVE           = 0x02,
  886.         FRAME_KIND_JIT_COMPILED     = 0x03
  887.     };
  888.     typedef ULONG FRAMEKIND;
  889.  
  890.     HRESULT GetKind
  891.     (
  892.         [out] FRAMEKIND *pfk
  893.     );
  894. }
  895.  
  896.  
  897. [
  898.     object,
  899.     uuid(275d9d92-5ff5-11cf-a5e1-00aa006bbf16)
  900. ]
  901.  
  902. interface IRemoteThreadGroup : IUnknown
  903. {
  904.     typedef IRemoteThreadGroup *LPREMOTETHREADGROUP;
  905.  
  906.     HRESULT GetName
  907.     (
  908.         [out] LPOLESTR *ppszName
  909.     );
  910.  
  911.     HRESULT GetThreads
  912.     (
  913.         [out] IEnumRemoteThread **ppEnum
  914.     );
  915.  
  916.     HRESULT GetThreadGroups
  917.     (
  918.         [out] IEnumRemoteThreadGroup **ppEnum
  919.     );
  920. }
  921.  
  922.  
  923. [
  924.     object,
  925.     uuid(275d9da4-5ff5-11cf-a5e1-00aa006bbf16)
  926. ]
  927.  
  928. interface IEnumRemoteThreadGroup : IUnknown
  929. {
  930.     typedef IEnumRemoteThreadGroup *LPENUMREMOTETHREADGROUP;
  931.  
  932.     HRESULT Next
  933.     (
  934.         [in] ULONG celt,
  935.         [out, size_is(celt), length_is(*pceltFetched)] IRemoteThreadGroup *rgelt[],
  936.         [out] ULONG *pceltFetched
  937.     );
  938.  
  939.     HRESULT Skip
  940.     (
  941.         [in] ULONG celt
  942.     );
  943.  
  944.     HRESULT Reset
  945.     (
  946.     );
  947.  
  948.     HRESULT Clone
  949.     (
  950.         [out] IEnumRemoteThreadGroup **ppEnum
  951.     );
  952. }
  953.  
  954.  
  955. [
  956.     object,
  957.     uuid(275d9d91-5ff5-11cf-a5e1-00aa006bbf16)
  958. ]
  959.  
  960. interface IRemoteThread : IUnknown
  961. {
  962.     typedef IRemoteThread *LPREMOTETHREAD;
  963.  
  964.     HRESULT GetName
  965.     (
  966.         [out] LPOLESTR *ppszName
  967.     );
  968.  
  969.     HRESULT GetCurrentFrame
  970.     (
  971.         [out] IRemoteStackFrame **ppCurrentFrame
  972.     );
  973.  
  974.     HRESULT GetThreadGroup
  975.     (
  976.         [out] IRemoteThreadGroup **ppThreadGroup
  977.     );
  978.  
  979.     HRESULT Go
  980.     (
  981.     );
  982.  
  983.     HRESULT Step
  984.     (
  985.     );
  986.  
  987.     HRESULT StepIn
  988.     (
  989.     );
  990.  
  991.     HRESULT StepOut
  992.     (
  993.     );
  994.  
  995.     HRESULT RangeStep
  996.     (
  997.         [in] ULONG offStart,
  998.         [in] ULONG offEnd
  999.     );
  1000.  
  1001.     HRESULT RangeStepIn
  1002.     (
  1003.         [in] ULONG offStart,
  1004.         [in] ULONG offEnd
  1005.     );
  1006.  
  1007.     HRESULT Destroy
  1008.     (
  1009.     );
  1010.  
  1011.     HRESULT Suspend
  1012.     (
  1013.     );
  1014.  
  1015.     HRESULT Resume
  1016.     (
  1017.     );
  1018.  
  1019.     HRESULT GetSuspendCount
  1020.     (
  1021.         [out] ULONG *pcSuspend
  1022.     );
  1023. }
  1024.  
  1025.  
  1026. [
  1027.     object,
  1028.     uuid(275d9da3-5ff5-11cf-a5e1-00aa006bbf16)
  1029. ]
  1030.  
  1031. interface IEnumRemoteThread : IUnknown
  1032. {
  1033.     typedef IEnumRemoteThread *LPENUMREMOTETHREAD;
  1034.  
  1035.     HRESULT Next
  1036.     (
  1037.         [in] ULONG celt,
  1038.         [out, size_is(celt), length_is(*pceltFetched)] IRemoteThread *rgelt[],
  1039.         [out] ULONG *pceltFetched
  1040.     );
  1041.  
  1042.     HRESULT Skip
  1043.     (
  1044.         [in] ULONG celt
  1045.     );
  1046.  
  1047.     HRESULT Reset
  1048.     (
  1049.     );
  1050.  
  1051.     HRESULT Clone
  1052.     (
  1053.         [out] IEnumRemoteThread **ppEnum
  1054.     );
  1055. }
  1056.  
  1057.  
  1058. [
  1059.     object,
  1060.     uuid(275d9d94-5ff5-11cf-a5e1-00aa006bbf16)
  1061. ]
  1062.  
  1063. interface IRemoteProcessCallback : IUnknown
  1064. {
  1065.     typedef IRemoteProcessCallback *LPREMOTEPROCESSCALLBACK;
  1066.  
  1067.     enum
  1068.     {
  1069.         EXCEPTION_KIND_FIRST_CHANCE     = 0x0001,
  1070.         EXCEPTION_KIND_LAST_CHANCE      = 0x0002,
  1071.     };
  1072.     typedef ULONG EXCEPTIONKIND;
  1073.  
  1074.  
  1075.     HRESULT DebugStringEvent
  1076.     (
  1077.         [in, unique] IRemoteThread *pThread,
  1078.         [in] LPCOLESTR pszDebugString
  1079.     );
  1080.  
  1081.     HRESULT CodeBreakpointEvent
  1082.     (
  1083.         [in, unique] IRemoteThread *pThread
  1084.     );
  1085.  
  1086.     HRESULT DataBreakpointEvent
  1087.     (
  1088.         [in, unique] IRemoteThread *pThread,
  1089.         [in, unique] IRemoteObject *pObject
  1090.     );
  1091.  
  1092.     HRESULT ExceptionEvent
  1093.     (
  1094.         [in, unique] IRemoteThread *pThread,
  1095.         [in, unique] IRemoteClassField *pExceptionClass,
  1096.         [in] EXCEPTIONKIND exceptionKind
  1097.     );
  1098.  
  1099.     HRESULT StepEvent
  1100.     (
  1101.         [in, unique] IRemoteThread *pThread
  1102.     );
  1103.  
  1104.     HRESULT CanStopEvent
  1105.     (
  1106.         [in, unique] IRemoteThread *pThread
  1107.     );
  1108.  
  1109.     HRESULT BreakEvent
  1110.     (
  1111.         [in, unique] IRemoteThread *pThread
  1112.     );
  1113.  
  1114.     HRESULT ThreadCreateEvent
  1115.     (
  1116.         [in, unique] IRemoteThread *pThread
  1117.     );
  1118.  
  1119.     HRESULT ThreadDestroyEvent
  1120.     (
  1121.         [in, unique] IRemoteThread *pThread
  1122.     );
  1123.  
  1124.     HRESULT ThreadGroupCreateEvent
  1125.     (
  1126.         [in, unique] IRemoteThread *pThread,
  1127.         [in, unique] IRemoteThreadGroup *pThreadGroup
  1128.     );
  1129.  
  1130.     HRESULT ThreadGroupDestroyEvent
  1131.     (
  1132.         [in, unique] IRemoteThread *pThread,
  1133.         [in, unique] IRemoteThreadGroup *pThreadGroup
  1134.     );
  1135.  
  1136.     HRESULT ClassLoadEvent
  1137.     (
  1138.         [in, unique] IRemoteThread *pThread,
  1139.         [in, unique] IRemoteClassField *pClassType
  1140.     );
  1141.  
  1142.     HRESULT ClassUnloadEvent
  1143.     (
  1144.         [in, unique] IRemoteThread *pThread,
  1145.         [in, unique] IRemoteClassField *pClassType
  1146.     );
  1147.  
  1148.     HRESULT ProcessDestroyEvent
  1149.     (
  1150.         [in, unique] IRemoteThread *pThread
  1151.     );
  1152.  
  1153.     HRESULT TraceEvent
  1154.     (
  1155.         [in, unique] IRemoteThread *pThread
  1156.     );
  1157.  
  1158.     HRESULT LoadCompleteEvent
  1159.     (
  1160.         [in, unique] IRemoteThread *pThread
  1161.     );
  1162. }
  1163.  
  1164.  
  1165. [
  1166.     object,
  1167.     uuid(275d9d93-5ff5-11cf-a5e1-00aa006bbf16)
  1168. ]
  1169.  
  1170. interface IRemoteProcess : IUnknown
  1171. {
  1172.     typedef IRemoteProcess *LPREMOTEPROCESS;
  1173.  
  1174.     HRESULT RegisterCallback
  1175.     (
  1176.         [in, unique] IRemoteProcessCallback *pCallback
  1177.     );
  1178.  
  1179.     HRESULT Detach
  1180.     (
  1181.     );
  1182.  
  1183.     HRESULT Break
  1184.     (
  1185.     );
  1186.  
  1187.     HRESULT GetGlobalContainerObject
  1188.     (
  1189.         [out] IRemoteContainerObject **ppGlobalContainerObject
  1190.     );
  1191.  
  1192.     HRESULT FindClass
  1193.     (
  1194.         [in] LPCOLESTR pszClassName,
  1195.         [out] IRemoteClassField **ppClassType
  1196.     );
  1197.  
  1198.     HRESULT TraceMethods
  1199.     (
  1200.         [in] BOOL bTraceOn
  1201.     );
  1202.  
  1203.     HRESULT GetThreadGroups
  1204.     (
  1205.         [out] IEnumRemoteThreadGroup **ppEnum
  1206.     );
  1207. }
  1208.  
  1209.  
  1210. [
  1211.     object,
  1212.     uuid(275d9da5-5ff5-11cf-a5e1-00aa006bbf16)
  1213. ]
  1214.  
  1215. interface IEnumRemoteProcess : IUnknown
  1216. {
  1217.     typedef IEnumRemoteProcess *LPENUMREMOTEPROCESS;
  1218.  
  1219.     HRESULT Next
  1220.     (
  1221.         [in] ULONG celt,
  1222.         [out, size_is(celt), length_is(*pceltFetched)] IRemoteProcess *rgelt[],
  1223.         [out] ULONG *pceltFetched
  1224.     );
  1225.  
  1226.     HRESULT Skip
  1227.     (
  1228.         [in] ULONG celt
  1229.     );
  1230.  
  1231.     HRESULT Reset
  1232.     (
  1233.     );
  1234.  
  1235.     HRESULT Clone
  1236.     (
  1237.         [out] IEnumRemoteProcess **ppEnum
  1238.     );
  1239. }
  1240.  
  1241.  
  1242. [
  1243.     object,
  1244.     uuid(275d9d61-5ff5-11cf-a5e1-00aa006bbf16)
  1245. ]
  1246.  
  1247. interface IRemoteDebugManagerCallback : IUnknown
  1248. {
  1249.     typedef IRemoteDebugManagerCallback *LPREMOTEDEBUGMANAGERCALLBACK;
  1250.  
  1251.     HRESULT ProcessCreateEvent
  1252.     (
  1253.         [in, unique] IRemoteProcess *pProcessNew,
  1254.         [in, unique] IRemoteProcess *pProcessParent
  1255.     );
  1256. }
  1257.  
  1258.  
  1259. [
  1260.     object,
  1261.     uuid(275d9d60-5ff5-11cf-a5e1-00aa006bbf16)
  1262. ]
  1263.  
  1264. interface IRemoteDebugManager : IUnknown
  1265. {
  1266.     typedef IRemoteDebugManager *LPREMOTEDEBUGMANAGER;
  1267.  
  1268.     HRESULT RegisterCallback
  1269.     (
  1270.         [in, unique] IRemoteDebugManagerCallback *pCallback
  1271.     );
  1272.  
  1273.     HRESULT Detach
  1274.     (
  1275.     );
  1276.  
  1277.     HRESULT GetActiveProcesses
  1278.     (
  1279.         [out] IEnumRemoteProcess **ppEnum
  1280.     );
  1281.  
  1282.     HRESULT RequestCreateEvent
  1283.     (
  1284.         [in] LPCOLESTR pszProcessName,
  1285.         [in] DWORD dwParentProcessId
  1286.     );
  1287. }
  1288.  
  1289. [
  1290.     object,
  1291.     uuid(275d9dc0-5ff5-11cf-a5e1-00aa006bbf16)
  1292. ]
  1293.  
  1294. interface IJavaDebugManager : IUnknown
  1295. {
  1296.     HRESULT RegisterRemoteDebugManager
  1297.     (
  1298.         [in, unique] IRemoteDebugManager *pirdm,
  1299.         [in] DWORD dwProcessID
  1300.     );
  1301.  
  1302.     HRESULT Detach
  1303.     (
  1304.     );
  1305. }
  1306.  
  1307.