我正在尝试用C语言编写一些使用本地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;
}

此代码输出“wlanopenhandle():无效参数。”。
为什么会这样?从api文档来看,似乎我传递的所有内容都是正确的。我也尝试过将2作为WlanOpenHandle()的第一个参数。
(请注意,这不是我的完整代码,但此代码片段已经过测试,以显示上述问题。在真正的代码中,switch中有更多的情况,下面有更多的代码gotos tocleanup

最佳答案

phClientHandle参数传递一个空指针。试试这个:

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

关于c - 为什么WlanOpenHandle()在这里失败?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29046141/

10-13 02:33