JNA Java指向BOOL的指针

时间:2012-01-11 20:05:41

标签: java integer boolean jna

我正在尝试将此功能转换为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。

1 个答案:

答案 0 :(得分:1)

OpCodewlan_hosted_network_opcode_enable

According to MSDN

  

pvData 参数中传递指向 BOOL 的指针。

请注意,它是指针BOOL,而不是实际的BOOL值。

正如您所发现的那样,更改为IntByReference可以解决问题,可能是因为intBOOL在您的平台上尺寸相同,而且现在您传递了有效内容指针。