Может ли java получать доступ к глобальным событиям, созданным с помощью CreateEvent - PullRequest
1 голос
/ 24 января 2011

Я пытаюсь получить доступ к глобальному событию, созданному собственным кодом в моем клиенте Java.Я использую JNA для этой цели, чтобы вызвать метод OpenEvent kernel32.dll.Но метод всегда возвращает NULL, а GetLastError возвращает 2, что означает «Файл не найден».

Поэтому мне было интересно, может ли JVM увидеть эти глобальные события, и если да, то есть ли какой-нибудь другой подход, который я могу использовать?

- Vinzy

1 Ответ

0 голосов
/ 25 января 2011

Как вы называете свой openEvent?

Я полагаю, что-то вроде этого

int result = kernel32.OpenEvent( 10000, false, "Global\\nameOfEvent" ); //request for deletion

с той лишь разницей, что вы можете использовать объекты в качестве аргументов, что, я полагаю, являетсявопрос предпочтения.

Возможно, если вы предоставите код для звонка, мы сможем вам помочь.Еще одна вещь, которую нужно спросить, если вы вызываете CreateEvent в вашем родном коде где-то.Если вы покопаетесь в Windows API, вы заметите, что:

"Функция завершается успешно, только если какой-то процесс уже создал событие с помощью функции CreateEvent."

source: http://msdn.microsoft.com/en-us/library/ms684305(v=vs.85).aspx

Что в вашей ситуации означает, что у вас будут большие неприятности, если вы не тот, кто будет создавать событие.Есть способ получить дескриптор для события, которое вы не создали, но это немного сложнее, и давайте начнем с того, что предоставим вам немного больше информации.

Приветствия.

Подводя итог:

Если вы нигде не вызываете CreateEvent в своем коде, у вас будут проблемы при вызове OpenEvent.Чтобы избежать этой проблемы, вам в основном нужно найти, какой процесс / поток удерживает блокировку для события, и сделать так, чтобы она передавала его вашему потоку (jvm's).

Если вы вызываете CreateEvent в своем коде, тогда вам следуетне возникнет проблем с получением ссылки на ваше мероприятие, а виновник находится где-то еще.

В любом случае, немного больше кода было бы неплохо.

...