JNA Java указатель на BOOL - PullRequest
       15

JNA Java указатель на BOOL

0 голосов
/ 12 января 2012

Я пытаюсь преобразовать эту функцию в 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 Ответ

1 голос
/ 12 января 2012

Согласно MSDN , когда OpCode равно wlan_hosted_network_opcode_enable:

Указатель на BOOL передается в параметре pvData .

Обратите внимание, что это указатель на BOOL, а не фактическое значение BOOL, которое необходимо.

Как вы обнаружили, переход на IntByReference решил проблему, вероятно, потому, что int и BOOL имеют одинаковый размер на вашей платформе, и теперь вы передаете действительный указатель.

...