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

C 为什么WlanOpenHandle()在这里失败?,c,windows,winapi,wifi,C,Windows,Winapi,Wifi,我正在尝试用C编写一些WinAPI代码,它使用本机WiFi API。目前,我在一开始就陷入困境,无法打开WiFi手柄 以下是我当前使用的代码: #include <stdio.h> #include <Windows.h> #include <wlanapi.h> #pragma comment(lib, "Wlanapi.lib") int main(int argc, char* argv[]) { HANDLE *wh = NULL;

我正在尝试用C编写一些WinAPI代码,它使用本机WiFi API。目前,我在一开始就陷入困境,无法打开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;
}
#包括
#包括
#包括
#pragma注释(lib,“Wlanapi.lib”)
int main(int argc,char*argv[]){
句柄*wh=NULL;
无符号长nv;
int rc;
if((rc=WlanOpenHandle(1,NULL,&nv,wh))!=ERROR\u SUCCESS){
printf(“WlanOpenHandle():”;
开关(rc){
案例错误\u无效\u参数:
printf(“无效参数。\n”);
打破
违约:
printf(“未知错误。\n”);
}
去清理;
}
清理:
WlanCloseHandle(wh,NULL);
getchar();
返回0;
}
此代码打印出“WlanOpenHandle():无效参数”

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


(请注意,这不是我的完整代码,但此代码段已经过测试,以显示上述问题。在实际代码中,开关中有更多的情况,并且在
goto
s to
cleanup
下有更多的代码)

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

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

直接从:
ERROR\u INVALID\u参数-pdwnegotatedversion为NULL,phClientHandle为NULL,或pReserved为not NULL。
谢谢,我不知道我是如何忽略了我在那里做的事情。@RetiredNinja我现在觉得很傻,我正处在那个页面上,只是没能阅读文档的那个部分。