gpt4 book ai didi

java - 使用 JNA 从 Java 调用 Windows UWP API

转载 作者:行者123 更新时间:2023-12-02 09:40:20 25 4
gpt4 key购买 nike

如何从 JVM 调用 Windows UWP API?
例如Windows.Security.Credentials API。
当尝试使用 JNA 时,我尝试过的 native 库名称都不会链接,而且我实际上无法找到与文档中描述的名称 Windows.Security.Credentials.dll 匹配的 DLL。

我想要做的事情是否可能,如何链接和调用 UWP API?

最佳答案

更新:我完全错过了第一个答案的重点,我想到的是 JNI,而不是 JNA,它看起来更像 C# pInvoke。下面的代码大致是您所需要的,但是您需要重建 IInspectable 和 IPasswordVault 的 v 表。您可以使用激活工厂而不是通过 RoActivateInstance 激活实例,但是您还需要重建 IActivationFactory 的接口(interface)。否则,如果语言错误,下面的调用顺序是正确的。

您可以链接和调用 RoActivateInstance 或 RoGetActivationFactory,并使用 Windows.Security.Credentials.h 中定义的 SDK 低级 COM 风格 ABI 接口(interface)。与上面相同的导入库。

例如:

IInspectable *pI {};
Windows::Security::Credentials::IPasswordVault pPV;
HRESULT hr = RoActivateInstance(L"Windows.Security.Credentials.PasswordVault", &pI);
if (SUCCEEDED(hr)) {
hr = pI->QueryInterface(__uuidof(Windows::Security::Credentials::IPasswordVault), (void**)&pPV);
}
if (SUCCEEDED(hr)) {
IVectorView<IPasswordCredential> *pPV{}; // namespaces omitted
hr = pPV->RetrieveAll(&pPV);
}

关于java - 使用 JNA 从 Java 调用 Windows UWP API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57133418/

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