Сам интерфейс JNI является производным от COM, и вы найдете эти методы и методы интерфейсов WMI гораздо более простыми в использовании, если вы будете использовать достаточно C ++ для обработки интерфейсов, реализованных в классах C ++.
Другая полезная вещь - это то, что вы сможете использовать указатели интерфейса COM и подсчет ссылок как способ привязки жизненного цикла интерфейса COM к жизненному циклу ваших Java-классов, реализованных с помощью JNI.
Я использовал такой подход для реализации моста Java через JNI для некоторых интерфейсов языка C в Windows. Я свернул вручную COM-интерфейсы и .lib, который используется при сборке JNI DLL.
Сложная часть работы с WMI состоит в том, что вы захотите использовать стандартные API-интерфейсы COM для создания экземпляров COM-объектов, тогда как я создал свой собственный «фабричный» код, поскольку все это была частная реализация.
Вы можете загрузить снимок моего дерева разработки для функциональной полной версии ODMJNI 1.0 0.50beta . Если вы посмотрите на info.odma.odmjni100 в дереве разработки, вы увидите, как создается JNI DLL (с использованием VC ++ 2005 Express Edition) и Java 1.5. Класс OdmJniBind.java состоит из статических методов, которые используются в классах Java для координации жизненных циклов объектов между классами Java и интерфейсами COM-объектов. (Одноранговый раздел дерева OdmNative обеспечивает реализацию файла OdmNative100.lib, который используется при компиляции файла odmjni100.dll, который используется через JNI.