⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jvmdi.h

📁 usbio Ver 2.40 source code!!! 做USB开发的值得
💻 H
📖 第 1 页 / 共 3 页
字号:
      (jclass clazz, jboolean *isArrayClassPtr);
    jvmdiError (JNICALL *GetClassLoader)
      (jclass clazz, jobject *classloaderPtr);

    jvmdiError (JNICALL *GetObjectHashCode)
      (jobject object, jint *hashCodePtr);
    jvmdiError (JNICALL *GetMonitorInfo)
      (jobject object, JVMDI_monitor_info *infoPtr);

    jvmdiError (JNICALL *GetFieldName)
      (jclass clazz, jfieldID field, char **namePtr, char **signaturePtr);
    jvmdiError (JNICALL *GetFieldDeclaringClass)
      (jclass clazz, jfieldID field, jclass *declaringClassPtr);
    jvmdiError (JNICALL *GetFieldModifiers)
      (jclass clazz, jfieldID field, jint *modifiersPtr);
    jvmdiError (JNICALL *IsFieldSynthetic)
      (jclass clazz, jfieldID field, jboolean *isSyntheticPtr);

    jvmdiError (JNICALL *GetMethodName)
      (jclass clazz, jmethodID method, 
       char **namePtr, char **signaturePtr);
    jvmdiError (JNICALL *GetMethodDeclaringClass)
      (jclass clazz, jmethodID method, jclass *declaringClassPtr);
    jvmdiError (JNICALL *GetMethodModifiers)
      (jclass clazz, jmethodID method, jint *modifiersPtr);
    jvmdiError (JNICALL *GetMaxStack)
      (jclass clazz, jmethodID method, jint *maxPtr);
    jvmdiError (JNICALL *GetMaxLocals)
      (jclass clazz, jmethodID method, jint *maxPtr);
    jvmdiError (JNICALL *GetArgumentsSize)
      (jclass clazz, jmethodID method, jint *sizePtr);
    jvmdiError (JNICALL *GetLineNumberTable)
      (jclass clazz, jmethodID method,
       jint *entryCountPtr, JVMDI_line_number_entry **tablePtr);
    jvmdiError (JNICALL *GetMethodLocation)
      (jclass clazz, jmethodID method,
       jlocation *startLocationPtr, jlocation *endLocationPtr);
    jvmdiError (JNICALL *GetLocalVariableTable)
      (jclass clazz, jmethodID method,
       jint *entryCountPtr, JVMDI_local_variable_entry **tablePtr);
    jvmdiError (JNICALL *GetExceptionHandlerTable)
      (jclass clazz, jmethodID method,
       jint *entryCountPtr, JVMDI_exception_handler_entry **tablePtr);
    jvmdiError (JNICALL *GetThrownExceptions)
      (jclass clazz, jmethodID method,
       jint *exceptionCountPtr, jclass **exceptionsPtr);
    jvmdiError (JNICALL *GetBytecodes)
      (jclass clazz, jmethodID method,
       jint *bytecodeCountPtr, jbyte **bytecodesPtr);
    jvmdiError (JNICALL *IsMethodNative)
      (jclass clazz, jmethodID method, jboolean *isNativePtr);
    jvmdiError (JNICALL *IsMethodSynthetic)
      (jclass clazz, jmethodID method, jboolean *isSyntheticPtr);

    jvmdiError (JNICALL *GetLoadedClasses)
      (jint *classCountPtr, jclass **classesPtr);
    jvmdiError (JNICALL *GetClassLoaderClasses)
      (jobject initiatingLoader, jint *classesCountPtr, 
       jclass **classesPtr);

    jvmdiError (JNICALL *PopFrame)
      (jthread thread);
    jvmdiError (JNICALL *SetFrameLocation)
      (jframeID frame, jlocation location);
    jvmdiError (JNICALL *GetOperandStack)
      (jframeID frame, jint *operandStackSizePtr, 
       JVMDI_operand_stack_element **operandStackPtr);
    jvmdiError (JNICALL *SetOperandStack)
      (jframeID frame, jint operandStackSize, 
       JVMDI_operand_stack_element *operandStack);
    jvmdiError (JNICALL *AllInstances)
      (jclass clazz, jint *instanceCountPtr, jobject **instancesPtr);
    jvmdiError (JNICALL *References)
      (jobject obj, JVMDI_object_reference_info *refs);
    jvmdiError (JNICALL *GetClassDefinition)
      (jclass clazz, JVMDI_class_definition *classDefPtr);
    jvmdiError (JNICALL *RedefineClasses)
      (jint classCount, JVMDI_class_definition *classDefs);

    jvmdiError (JNICALL *GetVersionNumber)
      (jint *versionPtr);
    jvmdiError (JNICALL *GetCapabilities)
      (JVMDI_capabilities *capabilitiesPtr);

    jvmdiError (JNICALL *GetSourceDebugExtension)
      (jclass clazz, char **sourceDebugExtension);
    jvmdiError (JNICALL *IsMethodObsolete)
      (jclass clazz, jmethodID method, jboolean *isObsoletePtr);

    jvmdiError (JNICALL *SuspendThreadList)
      (jint reqCount, jthread *reqList, jvmdiError *results); 
    jvmdiError (JNICALL *ResumeThreadList)
      (jint reqCount, jthread *reqList, jvmdiError *results); 
} JVMDI_Interface_1;
  
#ifndef NO_JVMDI_MACROS

#define JVMDI_ERROR_DUPLICATE_BREAKPOINT JVMDI_ERROR_DUPLICATE
#define JVMDI_ERROR_NO_SUCH_BREAKPOINT   JVMDI_ERROR_NOT_FOUND
#define JVMDI_ERROR_DUPLICATE_FRAME_POP  JVMDI_ERROR_DUPLICATE


static JVMDI_Interface_1 *jvmdi_interface = NULL;
static JavaVM *j_vm;

#ifdef __cplusplus
#define SetJVMDIfromJNIEnv(a_env) ( (jvmdi_interface == NULL)?  \
              ((a_env)->GetJavaVM(&j_vm),  \
               (j_vm)->GetEnv((void **)&jvmdi_interface,  \
                               JVMDI_VERSION_1)):0)
#else
#define SetJVMDIfromJNIEnv(a_env) ( (jvmdi_interface == NULL)?  \
              ((*a_env)->GetJavaVM(a_env, &j_vm), \
               (*j_vm)->GetEnv(j_vm, (void **)&jvmdi_interface, \
                               JVMDI_VERSION_1)):0)
#endif

#define JVMDI_SetEventHook(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->SetEventHook(a1) )
#define JVMDI_GetThreadStatus(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetThreadStatus(a1, a2, a3) )
#define JVMDI_GetAllThreads(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetAllThreads(a1, a2) )
#define JVMDI_SuspendThread(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->SuspendThread(a1) )
#define JVMDI_ResumeThread(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->ResumeThread(a1) )
#define JVMDI_StopThread(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->StopThread(a1, a2) )
#define JVMDI_InterruptThread(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->InterruptThread(a1) )
#define JVMDI_SetSingleStep(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->SetEventNotificationMode( \
                                       (a2) ? JVMDI_ENABLE : JVMDI_DISABLE, \
                                        JVMDI_EVENT_SINGLE_STEP, a1) )
#define JVMDI_GetThreadInfo(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetThreadInfo(a1, a2) )
#define JVMDI_RunDebugThread(a_env, a1, a2, a3, a4) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->RunDebugThread(a1, a2, a3, a4) )
#define JVMDI_GetTopThreadGroups(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetTopThreadGroups(a1, a2) )
#define JVMDI_GetThreadGroupInfo(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetThreadGroupInfo(a1, a2) )
#define JVMDI_GetThreadGroupChildren(a_env, a1, a2, a3, a4, a5) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetThreadGroupChildren(a1, a2, a3, a4, a5) )
#define JVMDI_GetCurrentFrame(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetCurrentFrame(a1, a2) )
#define JVMDI_GetCallerFrame(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetCallerFrame(a1, a2) )
#define JVMDI_GetFrameLocation(a_env, a1, a2, a3, a4) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetFrameLocation(a1, a2, a3, a4) )
#define JVMDI_NotifyFramePop(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->NotifyFramePop(a1) )
#define JVMDI_GetLocalObject(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetLocalObject(a1, a2, a3) )
#define JVMDI_GetLocalInt(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetLocalInt(a1, a2, a3) )
#define JVMDI_GetLocalLong(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetLocalLong(a1, a2, a3) )
#define JVMDI_GetLocalFloat(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetLocalFloat(a1, a2, a3) )
#define JVMDI_GetLocalDouble(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetLocalDouble(a1, a2, a3) )
#define JVMDI_SetLocalObject(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->SetLocalObject(a1, a2, a3) )
#define JVMDI_SetLocalInt(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->SetLocalInt(a1, a2, a3) )
#define JVMDI_SetLocalLong(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->SetLocalLong(a1, a2, a3) )
#define JVMDI_SetLocalFloat(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->SetLocalFloat(a1, a2, a3) )
#define JVMDI_SetLocalDouble(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->SetLocalDouble(a1, a2, a3) )
#define JVMDI_CreateRawMonitor(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->CreateRawMonitor(a1, a2) )
#define JVMDI_DestroyRawMonitor(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->DestroyRawMonitor(a1) )
#define JVMDI_RawMonitorEnter(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->RawMonitorEnter(a1) )
#define JVMDI_RawMonitorExit(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->RawMonitorExit(a1) )
#define JVMDI_RawMonitorWait(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->RawMonitorWait(a1, a2) )
#define JVMDI_RawMonitorNotify(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->RawMonitorNotify(a1) )
#define JVMDI_RawMonitorNotifyAll(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->RawMonitorNotifyAll(a1) )
#define JVMDI_SetBreakpoint(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->SetBreakpoint(a1, a2, a3) )
#define JVMDI_ClearBreakpoint(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->ClearBreakpoint(a1, a2, a3) )
#define JVMDI_ClearAllBreakpoints(a_env) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->ClearAllBreakpoints() )
#define JVMDI_SetAllocationHooks(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->SetAllocationHooks(a1, a2) )
#define JVMDI_Allocate(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->Allocate(a1, a2) )
#define JVMDI_Deallocate(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->Deallocate(a1) )
#define JVMDI_GetClassSignature(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetClassSignature(a1, a2) )
#define JVMDI_GetClassStatus(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetClassStatus(a1, a2) )
#define JVMDI_GetSourceFileName(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetSourceFileName(a1, a2) )
#define JVMDI_GetClassModifiers(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetClassModifiers(a1, a2) )
#define JVMDI_GetClassMethods(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetClassMethods(a1, a2, a3) )
#define JVMDI_GetClassFields(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetClassFields(a1, a2, a3) )
#define JVMDI_GetImplementedInterfaces(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetImplementedInterfaces(a1, a2, a3) )
#define JVMDI_IsInterface(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->IsInterface(a1, a2) )
#define JVMDI_IsArrayClass(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->IsArrayClass(a1, a2) )
#define JVMDI_ClassLoader(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetClassLoader(a1, a2) )
#define JVMDI_GetFieldName(a_env, a1, a2, a3, a4) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetFieldName(a1, a2, a3, a4) )
#define JVMDI_GetFieldDeclaringClass(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetFieldDeclaringClass(a1, a2, a3) )
#define JVMDI_GetFieldModifiers(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetFieldModifiers(a1, a2, a3) )
#define JVMDI_GetMethodName(a_env, a1, a2, a3, a4) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetMethodName(a1, a2, a3, a4) )
#define JVMDI_GetMethodDeclaringClass(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetMethodDeclaringClass(a1, a2, a3) )
#define JVMDI_GetMethodModifiers(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetMethodModifiers(a1, a2, a3) )
#define JVMDI_GetMaxStack(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetMaxStack(a1, a2, a3) )
#define JVMDI_GetMaxLocals(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetMaxLocals(a1, a2, a3) )
#define JVMDI_GetArgumentsSize(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetArgumentsSize(a1, a2, a3) )
#define JVMDI_GetLineNumberTable(a_env, a1, a2, a3, a4) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetLineNumberTable(a1, a2, a3, a4) )
#define JVMDI_GetMethodLocation(a_env, a1, a2, a3, a4) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetMethodLocation(a1, a2, a3, a4) )
#define JVMDI_GetLocalVariableTable(a_env, a1, a2, a3, a4) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetLocalVariableTable(a1, a2, a3, a4) )
#define JVMDI_GetExceptionHandlerTable(a_env, a1, a2, a3, a4) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetExceptionHandlerTable(a1, a2, a3, a4) )
#define JVMDI_GetThrownExceptions(a_env, a1, a2, a3, a4) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetThrownExceptions(a1, a2, a3, a4) )
#define JVMDI_GetBytecodes(a_env, a1, a2, a3, a4) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetBytecodes(a1, a2, a3, a4) )
#define JVMDI_IsMethodNative(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->IsMethodNative(a1, a2, a3) )
#define JVMDI_GetLoadedClasses(a_env, a1, a2) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetLoadedClasses(a1, a2) )
#define JVMDI_GetClassLoaderClasses(a_env, a1, a2, a3) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetClassLoaderClasses(a1, a2, a3) )
#define JVMDI_GetVersionNumber(a_env, a1) ( \
              SetJVMDIfromJNIEnv(a_env), \
              jvmdi_interface->GetVersionNumber(a1) )

#endif /* !NO_JVMDI_MACROS */

#ifdef __cplusplus
} /* extern "C" */
#endif /* __cplusplus */

#endif /* !_JAVASOFT_JVMDI_H_ */


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -