为什么WlanOpenHandle()在这里失败?

时间:2015-03-14 06:29:59

标签: c windows winapi wlan

我试图在C中编写一些使用Native WiFi API的WinAPI代码。目前,我一开始就陷入困境,开启WiFi手柄。

以下是我目前使用的代码:

#include <stdio.h>
#include <Windows.h>
#include <wlanapi.h>
#pragma comment(lib, "Wlanapi.lib")

int main(int argc, char* argv[]) {
    HANDLE *wh = NULL;
    unsigned long nv;
    int rc;

    if ((rc = WlanOpenHandle(1, NULL, &nv, wh)) != ERROR_SUCCESS) {
        printf("WlanOpenHandle(): ");
        switch (rc) {
            case ERROR_INVALID_PARAMETER:
                printf("Invalid param.\n");
                break;
            default:
                printf("Unknown error.\n");
        }
        goto cleanup;
    }

    cleanup:
    WlanCloseHandle(wh, NULL);
    getchar();
    return 0;
}

此代码打印出&#34; WlanOpenHandle():无效的参数。&#34;。

为什么要这样做?从API文档中,看起来我正确地传递了所有内容。我还尝试2作为WlanOpenHandle()的第一个参数。

(请注意,这不是我的完整代码,但此代码段已经过测试,可以展示上述问题。在实际代码中,交换机中有更多案例,goto下面有更多代码s到cleanup。)

1 个答案:

答案 0 :(得分:2)

您正在为phClientHandle参数传递NULL指针。试试这个:

HANDLE wh; // note: HANDLE, not HANDLE*
// ...
if ((rc = WlanOpenHandle(1, NULL, &nv, &wh)) != ERROR_SUCCESS) // note: &wh