The IJavaEventMonitorIDInfo interface is used by a profiler to communicate with the Microsoft virtual machine (Microsoft VM) to control event monitoring and request information.
The Microsoft VM implements IJavaEventMonitorIDInfo, IJavaEventMonitorIDInfo2, or IJavaEventMonitorIDInfo3. The Microsoft VM passes an IJavaEventMonitorIDInfo interface to each profiler or event monitor during initialization.
The Microsoft VM implements the IJavaEventMonitorIDInfo3 object. A profiler application can call QueryInterface on the IJavaEventMonitorIDInfo interface object passed to its Initialize method to determine if the Microsoft VM supports the IJavaEventMonitorIDInfo2 or IJavaEventMonitorIDInfo3 interface. The profiler or event monitor that is set to use the interface should call the AddRef method on this interface.
A profiler or event monitor can call methods on the IJavaEventMonitorIDInfo interface to get information about a Java process being executed. Information is available on classes, methods, and other objects.
The IJavaEventMonitorIDInfo interface implemented by the Microsoft VM uses the free-threading model. Events are dispatched from within the VM or on a thread that is making the Java profiler method call. Interface methods implemented by the VM can be called from any thread (that has been CoInitialized) at any time.
The methods implemented on this interface return S_OK on success, or E_FAIL on failure.
For parameters returned from these methods that are [out] buffer parameters filled with pointers to buffers (and not NULL pointers), these objects were allocated by the Microsoft VM using CoTaskMemAlloc. The profiler must free these objects using calls to CoTaskMemFree.
// Methods ClassInformation GetEventMask GetMonitorUsage InterpretedMethodInformation JITCompiledMethodInformation MethodInformation ObjectInformation SetEventMask