我正在尝试在 JNA 中使用以下 Windows API:
UINT WINAPI GetRawInputDeviceList(
_Out_opt_ PRAWINPUTDEVICELIST pRawInputDeviceList,
_Inout_ PUINT puiNumDevices,
_In_ UINT cbSize
);
Run Code Online (Sandbox Code Playgroud)
UINT cbSize 是 RAWINPUTDEVICELIST 结构的大小,以字节为单位。如何在JNA中知道它?我偶然发现 16 是一个正确的值。
结构如下:
typedef struct tagRAWINPUTDEVICELIST {
HANDLE hDevice;
DWORD dwType;
} RAWINPUTDEVICELIST, *PRAWINPUTDEVICELIST;
Run Code Online (Sandbox Code Playgroud)
pRawInputDeviceList 是一个 RAWINPUTDEVICELIST 结构数组,因此在 JNA 中我声明了以下签名:
UINT GetRawInputDeviceList(PointerByReference pRawInputDeviceList, IntByReference puiNumDevices, UINT cbSize);
Run Code Online (Sandbox Code Playgroud)
这是我在 JNA 中的结构:
public static class RawInputDeviceList extends Structure {
public HANDLE hDevice;
public DWORD dwType;
public RawInputDeviceList() {
// required for toArray()
}
public RawInputDeviceList(Pointer pointer) {
super(pointer);
read(); …Run Code Online (Sandbox Code Playgroud)