我正在尝试将此功能转换为JNA:
DWORD WINAPI WlanHostedNetworkSetProperty(
__in HANDLE hClientHandle,
__in WLAN_HOSTED_NETWORK_OPCODE OpCode,
__in DWORD dwDataSize,
__in PVOID pvData,
__out_opt PWLAN_HOSTED_NETWORK_REASON pFailReason,
__reserved PVOID pvReserved
);
正如我现在所说:
int WlanHostedNetworpSetProperty(HANDLE hClientHandle, IntByReference OpCode,int dwDataSize, Pointer pvData, IntByReference pFailReason, Pointer pvReserved);
哪个应该是对的。
然而,当OpCode是wlan_hosted_network_opcode_enable,又名为3时,它希望pvData为BOOL。我读到BOOL是一个整数,但是执行pvData.setInteger(1)会使应用程序崩溃。任何帮助都会很棒。
崩溃是一个EXCEPTION_ACCESS_VIOLATION。
答案 0 :(得分:1)
OpCode
为wlan_hosted_network_opcode_enable
时
在 pvData 参数中传递指向 BOOL 的指针。
请注意,它是指针到BOOL
,而不是实际的BOOL
值。
正如您所发现的那样,更改为IntByReference
可以解决问题,可能是因为int
和BOOL
在您的平台上尺寸相同,而且现在您传递了有效内容指针。