Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added WBEM methods and a class. #1474

Conversation

rchateauneu
Copy link
Contributor

Added methods to IWbemContext, IWbemServices and IWbemClassObject. Added IWbemQualifierSet.

@rchateauneu
Copy link
Contributor Author

Following this kind suggestion:

https://stackoverflow.com/questions/72265941/calling-iwbemservices-getobject-with-jna-and-java

Copy link
Member

@matthiasblaesing matthiasblaesing left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please have a look at the inline comments.

rchateauneu added a commit to rchateauneu/present that referenced this pull request Oct 23, 2022
@matthiasblaesing
Copy link
Member

Thank you for the updates. Could you please check if you can create tests for the new methods? You can extend the existing test accordingly: https://github.com/java-native-access/jna/blob/master/contrib/platform/test/com/sun/jna/platform/win32/COM/WbemcliTest.java

@matthiasblaesing
Copy link
Member

Thank you. Looks good to me. I pushed the PR to appveyor and that came back clean. The last little nitpick: The new test is locale dependent. Could you please check this patch, which should fix that?

# This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- a/contrib/platform/test/com/sun/jna/platform/win32/COM/WbemcliTest.java
+++ b/contrib/platform/test/com/sun/jna/platform/win32/COM/WbemcliTest.java
@@ -49,6 +49,7 @@
 import com.sun.jna.platform.win32.OaIdl.SAFEARRAY;
 import com.sun.jna.platform.win32.WTypes;
 import com.sun.jna.platform.win32.Kernel32;
+import com.sun.jna.platform.win32.WinNT;
 import com.sun.jna.ptr.IntByReference;
 import java.util.Arrays;
 import java.util.HashSet;
@@ -327,7 +328,7 @@
 
         boolean foundWin32_Process = false;
         try {
-            svc = WbemcliUtil.connectServer(WbemcliUtil.DEFAULT_NAMESPACE);
+            svc = connectServerEnglishLocale(WbemcliUtil.DEFAULT_NAMESPACE);
             enumRes = svc.ExecQuery(
                     "WQL",
                     "SELECT * FROM meta_class",
@@ -428,4 +429,25 @@
         assertEquals(currentPid, pVal.longValue());
     }
 
+    /**
+     * Copy from WbemcliUtil#connectServer with American English selected as
+     * locale.
+     */
+    private static Wbemcli.IWbemServices connectServerEnglishLocale(String namespace) {
+        Wbemcli.IWbemLocator loc = Wbemcli.IWbemLocator.create();
+        if (loc == null) {
+            throw new COMException("Failed to create WbemLocator object.");
 }
+
+        Wbemcli.IWbemServices services = loc.ConnectServer(namespace, null, null, "MS_409", 0, null, null);
+        loc.Release();
+
+        WinNT.HRESULT hres = Ole32.INSTANCE.CoSetProxyBlanket(services, Ole32.RPC_C_AUTHN_WINNT, Ole32.RPC_C_AUTHZ_NONE, null,
+                Ole32.RPC_C_AUTHN_LEVEL_CALL, Ole32.RPC_C_IMP_LEVEL_IMPERSONATE, null, Ole32.EOAC_NONE);
+        if (COMUtils.FAILED(hres)) {
+            services.Release();
+            throw new COMException("Could not set proxy blanket.", hres);
+        }
+        return services;
+    }
+}

It would be nice if you could include this (if it does not cause issues on your locale). If it works, please include it, squash all commits into a single commit, add an entry to CHANGES.md (have a look at the existing entries) with a summary of this change as a new feature.

@matthiasblaesing matthiasblaesing merged commit 529b716 into java-native-access:master Oct 30, 2022
@matthiasblaesing
Copy link
Member

Appveyor and Travis are both happy with this and my local test also worked ok.

Thank you for your contribution!

@rchateauneu
Copy link
Contributor Author

All the pleasure is for me. Many thanks again for your patience and help.

benkard added a commit to benkard/mulkcms2 that referenced this pull request Jan 14, 2023
This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [net.java.dev.jna:jna](https://github.com/java-native-access/jna) | compile | minor | `5.12.1` -> `5.13.0` |

---

### Release Notes

<details>
<summary>java-native-access/jna</summary>

### [`v5.13.0`](https://github.com/java-native-access/jna/blob/HEAD/CHANGES.md#Release-5130)

[Compare Source](java-native-access/jna@5.12.1...5.13.0)

\================

## Features

-   [#&#8203;1454](java-native-access/jna#1454): Add `c.s.j.p.win32.Psapi.QueryWorkingSetEx` and associated Types - [@&#8203;crain-32](https://github.com/Crain-32).
-   [#&#8203;1459](java-native-access/jna#1459): Add `VirtualLock` and `VirtualUnlock` in `c.s.j.p.win32.Kernel32` - [@&#8203;matthiasblaesing](https://github.com/matthiasblaesing).
-   [#&#8203;1471](java-native-access/jna#1471): Add `c.s.j.p.win32.Advapi32Util#isCurrentProcessElevated` and associated Types - [@&#8203;dbwiddis](https://github.com/dbwiddis).
-   [#&#8203;1474](java-native-access/jna#1474): Add `c.s.j.p.win32.WbemCli#IWbemClassObject.IWbemQualifierSet`, `IWbemServices.GetObject`, `IWbemContext.SetValue` and associated methods - [@&#8203;rchateauneu](https://github.com/rchateauneu).
-   [#&#8203;1482](java-native-access/jna#1482): Add multilingual support of `Kernel32Util.formatMessage` - [@&#8203;overpathz](https://github.com/overpathz).
-   [#&#8203;1490](java-native-access/jna#1490): Adds support for a custom `SymbolProvider` in `NativeLibrary` & `Library` - [@&#8203;soywiz](https://github.com/soywiz).
-   [#&#8203;1491](java-native-access/jna#1491): Update libffi to v3.4.4  - [@&#8203;matthiasblaesing](https://github.com/matthiasblaesing).
-   [#&#8203;1487](java-native-access/jna#1487): Add 'uses' information to OSGI metadata in MANIFEST.MF to improve stability of package resolution - [@&#8203;sratz](https://github.com/sratz).

## Bug Fixes

-   [#&#8203;1452](java-native-access/jna#1452): Fix memory allocation/handling for error message generation in native library code (`dispatch.c`) - [@&#8203;matthiasblaesing](https://github.com/matthiasblaesing).
-   [#&#8203;1460](java-native-access/jna#1460): Fix win32 variant date conversion in DST offest window and with millisecond values - [@&#8203;eranl](https://github.com/eranl).
-   [#&#8203;1472](java-native-access/jna#1472): Fix incorrect bitmask in `c.s.j.Pointer#createConstant(int)` - [@&#8203;dbwiddis](https://github.com/dbwiddis).
-   [#&#8203;1481](java-native-access/jna#1481): Fix NPE in NativeLibrary when unpacking from classpath is disabled - [@&#8203;trespasserw](https://github.com/trespasserw).
-   [#&#8203;1489](java-native-access/jna#1489): Fixes typo in `OpenGL32Util#wglGetProcAddress`, instead of parameter `procName` the hardcoded value `wglEnumGpusNV` was used - [@&#8203;soywiz](https://github.com/soywiz).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants