Я использую приведенный здесь код: http://www.microchip.com/forums/tm.aspx?m=278617 для передачи данных через порт USB с использованием Java.Он отлично работает в 32-битной ОС Windows XP.Но когда я пытаюсь вызвать тот же метод прерывания для отправки отчета о выходе в среде Windows 7 32-битной ОС, JNI дает сбой внешней 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 работаетпотерпел крах за пределами JVM под средой Windows 7 32bit OS?Заранее спасибо.