2012-01-11 48 views
0

をBOOLする私はJNAにこの機能を変換しようとしています:JNA Javaのポインタ

 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

According to MSDNOpCodewlan_hosted_network_opcode_enableある:

BOOLへのポインタをpvDataパラメータに渡されます。

それはBOOLからポインタだと注意ではなく、必要とされている実際のBOOL値、。

IntByReferenceに変更すると、intBOOLがプラットフォーム上で同じサイズになり、有効なポインタが渡されている可能性があるため、問題が解決された可能性があります。

+0

ただし、ERROR_NOT_SUPPORTEDなどの代わりに「不正なパラメータ」が返されるようになりました。これはdwDataSizeが(4に)間違って設定されているためですか? – RobotRock

+0

Nvm、OpCodeはポインタであってはいけません。 – RobotRock