SHSTDAPI SHCreateItemFromParsingName(
PCWSTR pszPath,
IBindCtx *pbc,
REFIID riid,
void **ppv
);
我试图将上面的方法映射到这个方法:
WinNT.HRESULT SHCreateItemFromParsingName(String pszPath, Pointer p, Guid.REFIID riid, PointerByReference ppv);
编辑:
PointerByReference ppv = new PointerByReference();
Guid.REFIID rid = new Guid.REFIID(new Guid.IID(Shell32Extra.IID_IShellItem));
WinNT.HRESULT h = Shell32Extra.INSTANCE.SHCreateItemFromParsingName("*.txt",null,rid,ppv);
IShellItem shellItem = new IShellItem(ppv.getValue());
但是 HRESULT 抛出失败并返回 -2147024894
如果 pbc 不为空,它会抛出内存访问预期
我应该改变什么?我认为它可能因 PCWSTR 映射而失败。
最佳答案
虽然 technomage 会指出映射错误,但这些错误不会给您带来您得到的结果。 -2147024894 的 HRESULT
表示系统找不到该文件。您的 dd.txt
文件不在程序有权访问的路径中。
此外,您可以使用 WString
类型来指定您需要一个宽字符串。将您的 dd.txt
(或更长的路径)包装在 WString
构造函数中并传递它。
关于java - JNA 将 Java String 映射到 PCWSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52012538/