JAVADBG.IDL

/*++ 

Copyright (c) 1996 Microsoft Corporation

Module Name:

javadbg.idl

Abstract:

Java debugging interface definitions.

--*/


import "oleidl.idl";

interface IEnumLINEINFO;
interface IEnumRemoteBooleanValue;
interface IEnumRemoteByteValue;
interface IEnumRemoteCharValue;
interface IEnumRemoteDoubleValue;
interface IEnumRemoteFloatValue;
interface IEnumRemoteIntValue;
interface IEnumRemoteLongValue;
interface IEnumRemoteShortValue;
interface IEnumRemoteField;
interface IEnumRemoteObject;
interface IEnumRemoteProcess;
interface IEnumRemoteThread;
interface IEnumRemoteThreadGroup;
interface IEnumRemoteValue;
interface IJavaDebugManager;
interface IRemoteArrayField;
interface IRemoteArrayObject;
interface IRemoteBooleanObject;
interface IRemoteByteObject;
interface IRemoteCharObject;
interface IRemoteClassField;
interface IRemoteClassObject;
interface IRemoteContainerField;
interface IRemoteContainerObject;
interface IRemoteDataField;
interface IRemoteDebugManager;
interface IRemoteDebugManagerCallback;
interface IRemoteDoubleObject;
interface IRemoteField;
interface IRemoteFloatObject;
interface IRemoteIntObject;
interface IRemoteLongObject;
interface IRemoteMethodField;
interface IRemoteObject;
interface IRemoteProcess;
interface IRemoteProcessCallback;
interface IRemoteShortObject;
interface IRemoteStackFrame;
interface IRemoteThread;
interface IRemoteThreadGroup;

//
// error codes
//
cpp_quote("// error codes")
cpp_quote("//")
cpp_quote("// errors returned by IRemoteContainer::GetFieldObject")
cpp_quote("static const int E_FIELDOUTOFSCOPE = MAKE_HRESULT(1, FACILITY_ITF, 0x01);")
cpp_quote("static const int E_FIELDNOTINOBJECT = MAKE_HRESULT(1, FACILITY_ITF, 0x02);")
cpp_quote("static const int E_NOFIELDS = MAKE_HRESULT(1, FACILITY_ITF, 0x03);")
cpp_quote("static const int E_NULLOBJECTREF = MAKE_HRESULT(1, FACILITY_ITF, 0x04);")
cpp_quote("// errors returned by IRemoteProcess::FindClass")
cpp_quote("static const int E_CLASSNOTFOUND = MAKE_HRESULT(1, FACILITY_ITF, 0x10);")
cpp_quote("static const int E_BADMETHOD = MAKE_HRESULT(1, FACILITY_ITF, 0x20);")

[
object,
uuid(275d9da0-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IEnumLINEINFO : IUnknown
{
typedef IEnumLINEINFO *LPENUMLINEINFO;

typedef struct tagLINEINFO
{
USHORT offPC;
USHORT iLine;
}
LINEINFO, *LPLINEINFO;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] LPLINEINFO rgelt,
[out] ULONG *pceltFetched
);

HRESULT Skip
(
[in] ULONG celt
);

HRESULT Reset
(
);

HRESULT Clone
(
[out] IEnumLINEINFO **ppEnum
);

HRESULT GetCount
(
[out] ULONG *pcelt
);
}


[
object,
uuid(275d9d80-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteField : IUnknown
{
typedef IRemoteField *LPREMOTEFIELD;

HRESULT GetName
(
[out] LPOLESTR *ppszName
);

//
// field kinds
//
enum
{
FIELD_KIND_DATA_OBJECT = 0x0001,
FIELD_KIND_DATA_PRIMITIVE = 0x0002,
FIELD_KIND_ARRAY = 0x0004,
FIELD_KIND_CLASS = 0x0008,
FIELD_KIND_METHOD = 0x0010,
FIELD_KIND_LOCAL = 0x1000,
FIELD_KIND_PARAM = 0x2000,
FIELD_KIND_THIS = 0x4000,
};
typedef ULONG FIELDKIND;

HRESULT GetKind
(
[out] FIELDKIND *pfk
);

HRESULT GetType
(
[out] IRemoteField **ppType
);

HRESULT GetContainer
(
[out] IRemoteContainerField **ppContainer
);

//
// Modifier flags
//
enum
{
FIELD_ACC_PUBLIC = 0x0001,
FIELD_ACC_PRIVATE = 0x0002,
FIELD_ACC_PROTECTED = 0x0004,
FIELD_ACC_STATIC = 0x0008,
FIELD_ACC_FINAL = 0x0010,
FIELD_ACC_SYNCHRONIZED = 0x0020,
FIELD_ACC_VOLATILE = 0x0040,
FIELD_ACC_TRANSIENT = 0x0080,
FIELD_ACC_NATIVE = 0x0100,
FIELD_ACC_INTERFACE = 0x0200,
FIELD_ACC_ABSTRACT = 0x0400,
};
typedef ULONG FIELDMODIFIERS;

HRESULT GetModifiers
(
[out] FIELDMODIFIERS *pulModifiers
);
}


[
object,
uuid(275d9da1-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IEnumRemoteField : IUnknown
{
typedef IEnumRemoteField *LPENUMREMOTEFIELD;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] IRemoteField *rgelt[],
[out] ULONG *pceltFetched
);

HRESULT Skip
(
[in] ULONG celt
);

HRESULT Reset
(
);

HRESULT Clone
(
[out] IEnumRemoteField **ppEnum
);

HRESULT GetCount
(
[out] ULONG *pcelt
);
}


[
object,
uuid(275d9d81-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteDataField : IRemoteField
{
typedef IRemoteDataField *LPREMOTEDATAFIELD;
}


[
object,
uuid(275d9d82-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteArrayField : IRemoteDataField
{
typedef IRemoteArrayField *LPREMOTEARRAYFIELD;

HRESULT GetSize
(
[out] ULONG *pcElements
);
}


[
object,
uuid(275d9d83-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteContainerField : IRemoteField
{
typedef IRemoteContainerField *LPREMOTECONTAINERFIELD;

HRESULT GetFields
(
[out] IEnumRemoteField **ppEnum,
[in] FIELDKIND ulKind,
[in] FIELDMODIFIERS ulModifiers,
[in, unique] LPCOLESTR lpcszName
);
}


[
object,
uuid(275d9d84-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteMethodField : IRemoteContainerField
{
typedef IRemoteMethodField *LPREMOTEMETHODFIELD;

HRESULT SetBreakpoint
(
[in] ULONG offPC
);

HRESULT ClearBreakpoint
(
[in] ULONG offPC
);

HRESULT GetLineInfo
(
[out] IEnumLINEINFO **ppEnum
);

HRESULT GetBytes
(
[out] ILockBytes **ppLockBytes
);

HRESULT GetScope
(
[in, unique] IRemoteField *pField,
[out] ULONG *poffStart,
[out] ULONG *pcbScope
);

HRESULT GetIndexedField
(
[in] ULONG slot,
[in] ULONG offPC,
[out] IRemoteField **ppField
);
}


[
object,
uuid(275d9d85-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteClassField : IRemoteContainerField
{
typedef IRemoteClassField *LPREMOTECLASSFIELD;

//
// Constant pool tags
//
enum
{
CP_CONSTANT_UTF8 = 1,
CP_CONSTANT_UNICODE = 2,
CP_CONSTANT_INTEGER = 3,
CP_CONSTANT_FLOAT = 4,
CP_CONSTANT_LONG = 5,
CP_CONSTANT_DOUBLE = 6,
CP_CONSTANT_CLASS = 7,
CP_CONSTANT_STRING = 8,
CP_CONSTANT_FIELDREF = 9,
CP_CONSTANT_METHODREF = 10,
CP_CONSTANT_INTERFACEMETHODREF = 11,
CP_CONSTANT_NAMEANDTYPE = 12
};

HRESULT GetFileName
(
[out] LPOLESTR *ppszFileName
);

HRESULT GetSourceFileName
(
[out] LPOLESTR *ppszSourceFileName
);

HRESULT GetSuperclass
(
[out] IRemoteClassField **ppSuperclass
);

HRESULT GetInterfaces
(
[out] IEnumRemoteField **ppEnum
);

HRESULT GetConstantPoolItem
(
[in] ULONG indexCP,
[out, size_is(,*plength)] BYTE **ppCPBytes,
[out] ULONG *plength
);
}


[
object,
uuid(275d9db0-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteObject : IUnknown
{
typedef IRemoteObject *LPREMOTEOBJECT;

HRESULT GetType
(
[out] IRemoteField **ppType
);

HRESULT SetBreakpoint
(
);

HRESULT ClearBreakpoint
(
);

//
// JAVA built-int types
//
typedef BYTE JAVA_BOOLEAN;
typedef signed char JAVA_BYTE;
typedef USHORT JAVA_CHAR;
typedef double JAVA_DOUBLE;
typedef float JAVA_FLOAT;
typedef LONG JAVA_INT;
typedef LONGLONG JAVA_LONG;
typedef SHORT JAVA_SHORT;
typedef LPOLESTR JAVA_STRING;
}


[
object,
uuid(275d9da2-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IEnumRemoteObject : IUnknown
{
typedef IEnumRemoteObject *LPENUMREMOTEOBJECT;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] IRemoteObject *rgelt[],
[out] ULONG *pceltFetched
);

HRESULT Skip
(
[in] ULONG celt
);

HRESULT Reset
(
);

HRESULT Clone
(
[out] IEnumRemoteObject **ppEnum
);

HRESULT GetCount
(
[out] ULONG *pcelt
);
}


[
object,
uuid(da0a7738-de8e-11cf-b3b3-00a0244a1dd2)
]

interface IEnumRemoteValue : IUnknown
{
typedef IEnumRemoteValue *LPENUMREMOTEVALUE;

HRESULT Skip
(
[in] ULONG celt
);

HRESULT Reset
(
);

HRESULT Clone
(
[out] IEnumRemoteValue **ppEnum
);

HRESULT GetCount
(
[out] ULONG *pcelt
);
}


[
object,
uuid(282e2c9c-df62-11cf-b3b3-00a0244a1dd2)
]

interface IEnumRemoteBooleanValue : IEnumRemoteValue
{
typedef IEnumRemoteBooleanValue *LPENUMREMOTEBOOLEANVALUE;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] JAVA_BOOLEAN rgelt[],
[out] ULONG *pceltFetched
);
}


[
object,
uuid(29831ce2-df62-11cf-b3b3-00a0244a1dd2)
]

interface IEnumRemoteByteValue : IEnumRemoteValue
{
typedef IEnumRemoteByteValue *LPENUMREMOTEBYTEVALUE;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] JAVA_BYTE rgelt[],
[out] ULONG *pceltFetched
);
}


[
object,
uuid(c5d31048-de81-11cf-b3b3-00a0244a1dd2)
]

interface IEnumRemoteCharValue : IEnumRemoteValue
{
typedef IEnumRemoteCharValue *LPENUMREMOTECHARVALUE;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] JAVA_CHAR rgelt[],
[out] ULONG *pceltFetched
);
}


[
object,
uuid(9dc9ac24-df62-11cf-b3b3-00a0244a1dd2)
]

interface IEnumRemoteDoubleValue : IEnumRemoteValue
{
typedef IEnumRemoteDoubleValue *LPENUMREMOTEDOUBLEVALUE;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] JAVA_DOUBLE rgelt[],
[out] ULONG *pceltFetched
);
}


[
object,
uuid(a4c10b1c-df62-11cf-b3b3-00a0244a1dd2)
]

interface IEnumRemoteFloatValue : IEnumRemoteValue
{
typedef IEnumRemoteFloatValue *LPENUMREMOTEFLOATVALUE;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] JAVA_FLOAT rgelt[],
[out] ULONG *pceltFetched
);
}


[
object,
uuid(aa5eb51a-df62-11cf-b3b3-00a0244a1dd2)
]

interface IEnumRemoteIntValue : IEnumRemoteValue
{
typedef IEnumRemoteIntValue *LPENUMREMOTEINTVALUE;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] JAVA_INT rgelt[],
[out] ULONG *pceltFetched
);
}


[
object,
uuid(b208e470-df62-11cf-b3b3-00a0244a1dd2)
]

interface IEnumRemoteLongValue : IEnumRemoteValue
{
typedef IEnumRemoteLongValue *LPENUMREMOTELONGVALUE;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] JAVA_LONG rgelt[],
[out] ULONG *pceltFetched
);
}


[
object,
uuid(b74e576c-df62-11cf-b3b3-00a0244a1dd2)
]

interface IEnumRemoteShortValue : IEnumRemoteValue
{
typedef IEnumRemoteShortValue *LPENUMREMOTESHORTVALUE;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] JAVA_SHORT rgelt[],
[out] ULONG *pceltFetched
);
}


[
object,
uuid(275d9db1-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteArrayObject : IRemoteObject
{
typedef IRemoteArrayObject *LPREMOTEARRAYOBJECT;

HRESULT GetElementObjects
(
[out] IEnumRemoteObject **ppEnum
);

HRESULT GetSize
(
[out] ULONG *pcElements
);

HRESULT GetElementValues
(
[out] IEnumRemoteValue **ppEnum
);
}


[
object,
uuid(275d9db2-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteBooleanObject : IRemoteObject
{
typedef IRemoteBooleanObject *LPREMOTEBOOLEANOBJECT;

HRESULT GetValue
(
[out] JAVA_BOOLEAN *pvalue
);

HRESULT SetValue
(
[in] JAVA_BOOLEAN value
);
}


[
object,
uuid(275d9db3-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteByteObject : IRemoteObject
{
typedef IRemoteByteObject *LPREMOTEBYTEOBJECT;

HRESULT GetValue
(
[out] JAVA_BYTE *pvalue
);

HRESULT SetValue
(
[in] JAVA_BYTE value
);
}


[
object,
uuid(275d9db4-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteCharObject : IRemoteObject
{
typedef IRemoteCharObject *LPREMOTECHAROBJECT;

HRESULT GetValue
(
[out] JAVA_CHAR *pvalue
);

HRESULT SetValue
(
[in] JAVA_CHAR value
);
}


[
object,
uuid(275d9dbb-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteClassObject : IRemoteContainerObject
{
typedef IRemoteClassObject *LPREMOTECLASSOBJECT;

HRESULT GetDerivedMostType
(
[out] IRemoteClassField **ppDerivedMostField
);
}


[
object,
uuid(275d9db5-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteContainerObject : IRemoteObject
{
typedef IRemoteContainerObject *LPREMOTECONTAINEROBJECT;

HRESULT GetFieldObject
(
[in, unique] IRemoteField *pField,
[out] IRemoteObject **ppFieldObject
);
}


[
object,
uuid(275d9db6-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteDoubleObject : IRemoteObject
{
typedef IRemoteDoubleObject *LPREMOTEDOUBLEOBJECT;

HRESULT GetValue
(
[out] JAVA_DOUBLE *pvalue
);

HRESULT SetValue
(
[in] JAVA_DOUBLE *pvalue
);
}


[
object,
uuid(275d9db7-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteFloatObject : IRemoteObject
{
typedef IRemoteFloatObject *LPREMOTEFLOATOBJECT;

HRESULT GetValue
(
[out] JAVA_FLOAT *pvalue
);

HRESULT SetValue
(
[in] JAVA_FLOAT *pvalue
);
}


[
object,
uuid(275d9db8-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteIntObject : IRemoteObject
{
typedef IRemoteIntObject *LPREMOTEINTOBJECT;

HRESULT GetValue
(
[out] JAVA_INT *pvalue
);

HRESULT SetValue
(
[in] JAVA_INT value
);
}


[
object,
uuid(275d9db9-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteLongObject : IRemoteObject
{
typedef IRemoteLongObject *LPREMOTELONGOBJECT;

HRESULT GetValue
(
[out] JAVA_LONG *pvalue
);

HRESULT SetValue
(
[in] JAVA_LONG value
);
}


[
object,
uuid(275d9dba-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteShortObject : IRemoteObject
{
typedef IRemoteShortObject *LPREMOTESHORTOBJECT;

HRESULT GetValue
(
[out] JAVA_SHORT *pvalue
);

HRESULT SetValue
(
[in] JAVA_SHORT value
);
}


[
object,
uuid(275d9d90-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteStackFrame : IUnknown
{
typedef IRemoteStackFrame *LPREMOTESTACKOBJECT;

HRESULT GetCallingFrame
(
[out] IRemoteStackFrame **ppCallingFrame
);

HRESULT GetMethodObject
(
[out] IRemoteContainerObject **ppMethodObject
);

HRESULT GetPC
(
[out] ULONG *offPC
);

HRESULT SetPC
(
[in] ULONG offPC
);

//
// stack frame kinds
//
enum
{
FRAME_KIND_INVALID = 0x00,
FRAME_KIND_INTERPRETED = 0x01,
FRAME_KIND_NATIVE = 0x02,
FRAME_KIND_JIT_COMPILED = 0x03
};
typedef ULONG FRAMEKIND;

HRESULT GetKind
(
[out] FRAMEKIND *pfk
);
}


[
object,
uuid(275d9d92-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteThreadGroup : IUnknown
{
typedef IRemoteThreadGroup *LPREMOTETHREADGROUP;

HRESULT GetName
(
[out] LPOLESTR *ppszName
);

HRESULT GetThreads
(
[out] IEnumRemoteThread **ppEnum
);

HRESULT GetThreadGroups
(
[out] IEnumRemoteThreadGroup **ppEnum
);
}


[
object,
uuid(275d9da4-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IEnumRemoteThreadGroup : IUnknown
{
typedef IEnumRemoteThreadGroup *LPENUMREMOTETHREADGROUP;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] IRemoteThreadGroup *rgelt[],
[out] ULONG *pceltFetched
);

HRESULT Skip
(
[in] ULONG celt
);

HRESULT Reset
(
);

HRESULT Clone
(
[out] IEnumRemoteThreadGroup **ppEnum
);
}


[
object,
uuid(275d9d91-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteThread : IUnknown
{
typedef IRemoteThread *LPREMOTETHREAD;

HRESULT GetName
(
[out] LPOLESTR *ppszName
);

HRESULT GetCurrentFrame
(
[out] IRemoteStackFrame **ppCurrentFrame
);

HRESULT GetThreadGroup
(
[out] IRemoteThreadGroup **ppThreadGroup
);

HRESULT Go
(
);

HRESULT Step
(
);

HRESULT StepIn
(
);

HRESULT StepOut
(
);

HRESULT RangeStep
(
[in] ULONG offStart,
[in] ULONG offEnd
);

HRESULT RangeStepIn
(
[in] ULONG offStart,
[in] ULONG offEnd
);

HRESULT Destroy
(
);

HRESULT Suspend
(
);

HRESULT Resume
(
);

HRESULT GetSuspendCount
(
[out] ULONG *pcSuspend
);
}


[
object,
uuid(275d9da3-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IEnumRemoteThread : IUnknown
{
typedef IEnumRemoteThread *LPENUMREMOTETHREAD;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] IRemoteThread *rgelt[],
[out] ULONG *pceltFetched
);

HRESULT Skip
(
[in] ULONG celt
);

HRESULT Reset
(
);

HRESULT Clone
(
[out] IEnumRemoteThread **ppEnum
);
}


[
object,
uuid(275d9d94-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteProcessCallback : IUnknown
{
typedef IRemoteProcessCallback *LPREMOTEPROCESSCALLBACK;

enum
{
EXCEPTION_KIND_FIRST_CHANCE = 0x0001,
EXCEPTION_KIND_LAST_CHANCE = 0x0002,
};
typedef ULONG EXCEPTIONKIND;


HRESULT DebugStringEvent
(
[in, unique] IRemoteThread *pThread,
[in] LPCOLESTR pszDebugString
);

HRESULT CodeBreakpointEvent
(
[in, unique] IRemoteThread *pThread
);

HRESULT DataBreakpointEvent
(
[in, unique] IRemoteThread *pThread,
[in, unique] IRemoteObject *pObject
);

HRESULT ExceptionEvent
(
[in, unique] IRemoteThread *pThread,
[in, unique] IRemoteClassField *pExceptionClass,
[in] EXCEPTIONKIND exceptionKind
);

HRESULT StepEvent
(
[in, unique] IRemoteThread *pThread
);

HRESULT CanStopEvent
(
[in, unique] IRemoteThread *pThread
);

HRESULT BreakEvent
(
[in, unique] IRemoteThread *pThread
);

HRESULT ThreadCreateEvent
(
[in, unique] IRemoteThread *pThread
);

HRESULT ThreadDestroyEvent
(
[in, unique] IRemoteThread *pThread
);

HRESULT ThreadGroupCreateEvent
(
[in, unique] IRemoteThread *pThread,
[in, unique] IRemoteThreadGroup *pThreadGroup
);

HRESULT ThreadGroupDestroyEvent
(
[in, unique] IRemoteThread *pThread,
[in, unique] IRemoteThreadGroup *pThreadGroup
);

HRESULT ClassLoadEvent
(
[in, unique] IRemoteThread *pThread,
[in, unique] IRemoteClassField *pClassType
);

HRESULT ClassUnloadEvent
(
[in, unique] IRemoteThread *pThread,
[in, unique] IRemoteClassField *pClassType
);

HRESULT ProcessDestroyEvent
(
[in, unique] IRemoteThread *pThread
);

HRESULT TraceEvent
(
[in, unique] IRemoteThread *pThread
);

HRESULT LoadCompleteEvent
(
[in, unique] IRemoteThread *pThread
);
}


[
object,
uuid(275d9d93-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteProcess : IUnknown
{
typedef IRemoteProcess *LPREMOTEPROCESS;

HRESULT RegisterCallback
(
[in, unique] IRemoteProcessCallback *pCallback
);

HRESULT Detach
(
);

HRESULT Break
(
);

HRESULT GetGlobalContainerObject
(
[out] IRemoteContainerObject **ppGlobalContainerObject
);

HRESULT FindClass
(
[in] LPCOLESTR pszClassName,
[out] IRemoteClassField **ppClassType
);

HRESULT TraceMethods
(
[in] BOOL bTraceOn
);

HRESULT GetThreadGroups
(
[out] IEnumRemoteThreadGroup **ppEnum
);
}


[
object,
uuid(275d9da5-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IEnumRemoteProcess : IUnknown
{
typedef IEnumRemoteProcess *LPENUMREMOTEPROCESS;

HRESULT Next
(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] IRemoteProcess *rgelt[],
[out] ULONG *pceltFetched
);

HRESULT Skip
(
[in] ULONG celt
);

HRESULT Reset
(
);

HRESULT Clone
(
[out] IEnumRemoteProcess **ppEnum
);
}


[
object,
uuid(275d9d61-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteDebugManagerCallback : IUnknown
{
typedef IRemoteDebugManagerCallback *LPREMOTEDEBUGMANAGERCALLBACK;

HRESULT ProcessCreateEvent
(
[in, unique] IRemoteProcess *pProcessNew,
[in, unique] IRemoteProcess *pProcessParent
);
}


[
object,
uuid(275d9d60-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IRemoteDebugManager : IUnknown
{
typedef IRemoteDebugManager *LPREMOTEDEBUGMANAGER;

HRESULT RegisterCallback
(
[in, unique] IRemoteDebugManagerCallback *pCallback
);

HRESULT Detach
(
);

HRESULT GetActiveProcesses
(
[out] IEnumRemoteProcess **ppEnum
);

HRESULT RequestCreateEvent
(
[in] LPCOLESTR pszProcessName,
[in] DWORD dwParentProcessId
);
}

[
object,
uuid(275d9dc0-5ff5-11cf-a5e1-00aa006bbf16)
]

interface IJavaDebugManager : IUnknown
{
HRESULT RegisterRemoteDebugManager
(
[in, unique] IRemoteDebugManager *pirdm,
[in] DWORD dwProcessID
);

HRESULT Detach
(
);
}