gpt4 book ai didi

java - JNI 代码在 Windows XP 中工作正常,但在 Windows 7 中崩溃

转载 作者:行者123 更新时间:2023-12-01 15:27:46 25 4
gpt4 key购买 nike

我正在使用此处提供的代码:http://www.microchip.com/forums/tm.aspx?m=278617使用 Java 通过 USB 端口传输数据。它在 Windows XP 32 位操作系统中运行良好。但是,当我尝试在 Windows 7 32 位操作系统环境下调用相同的中断方法来发送输出报告时,JNI 使 Outsite JVM 崩溃。崩溃报告可以在这里找到:http://pastebin.com/A9USNFFY

导致JNI崩溃的函数如下:

    JNIEXPORT jboolean JNICALL Java_MyHID_IntSendOutputReport(JNIEnv *jEnv, jobject     jObj, jbyteArray outputReport)
{
boolean Result = false;
byte *buffer = new byte[Capabilities.OutputReportByteLength];
jboolean isCopy = JNI_TRUE;
buffer = (byte*)jEnv->GetByteArrayElements(outputReport, &isCopy);

/*
API Function: WriteFile
Sends a report to the device.
Returns: success or failure.
Requires:
A device handle returned by CreateFile.
A buffer that holds the report.
The Output Report length returned by HidP_GetCaps,
A variable to hold the number of bytes written.
*/

DWORD BytesWritten = 0;
if (WriteHandle != INVALID_HANDLE_VALUE) Result = WriteFile
(WriteHandle,
buffer,
Capabilities.OutputReportByteLength,
&BytesWritten,
NULL);

delete buffer;
return Result;
}

那么,有人可以帮我找到为什么 JNI 在 Windows 7 32 位操作系统环境下在 JVM 之外崩溃的问题吗?提前致谢。

最佳答案

您的代码完全不正确。很难相信它曾经在任何平台上运行过。删除 new 调用和 delete 行。 buffer 在您调用 GetByteArrayElements() 时分配。如果 isCopy 设置为 TRUE,则必须以 bufferJNI_ABORT 作为参数调用 ReleaseByteArrayElements()

您确实意识到有用于 USB 的 Java 包吗?

关于java - JNI 代码在 Windows XP 中工作正常,但在 Windows 7 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9964751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com