我有这个代码就在这里,我正在使用mingw编译,我正在运行windows XP。当我运行输出可执行文件时,它会给我关于应用程序的错误提示。
我是否所有的设置都正确?我如何设置SSID密码让它连接?我还想知道我是否使用正确的网络接口连接(我有一个外部WiFi适配器)。
我从this link得到的代码,任何帮助都非常感谢。
//#define _WIN32_DCOM
#define _WIN32_WINNT 0x0600
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <objbase.h>
#include <rpcsal.h>
#include <objbase.h>
#include <wlanapi.h>
int main(){
PDOT11_SSID pSsid;
strcpy(pSsid->ucSSID, "SUPERONLINE-WiFi_24811");
pSsid->uSSIDLength = 25;
HANDLE wlanHandle;
unsigned long nv;
WlanOpenHandle(1, NULL, &nv, &wlanHandle);
DWORD dwResult = 0;
WLAN_CONNECTION_PARAMETERS cp;
memset(&cp, 0, sizeof(WLAN_CONNECTION_PARAMETERS));
cp.wlanConnectionMode = wlan_connection_mode_profile;
cp.strProfile = NULL;
cp.dwFlags = 0;
cp.pDot11Ssid = pSsid;
cp.pDesiredBssidList = 0;
cp.dot11BssType = dot11_BSS_type_any;
PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
PWLAN_INTERFACE_INFO pIfInfo = NULL;
// only use the first wifi interface
dwResult = WlanEnumInterfaces(wlanHandle, NULL, &pIfList);
pIfInfo = (WLAN_INTERFACE_INFO *)&pIfList->InterfaceInfo[1];
if (dwResult == ERROR_SUCCESS)
{
dwResult = WlanConnect(wlanHandle, &(pIfInfo->InterfaceGuid), &cp, NULL);
if (dwResult == ERROR_SUCCESS)
{
printf("Connected..\n");
//connected = true;
}
}
return 0;
}
这是我得到的错误:
编辑:我已经完成了下面的代码..但是我仍然不能给PDOT11_SSID
结构体赋值..看起来这个结构体有UCHAR
数组,但是我不能赋值..下面是link
PDOT11_SSID pSsid;
UCHAR arr[22] = { 0 };
//memset(pSsid->ucSSID, '\0', 32); //this causes the same error too
memcpy(
arr,
(unsigned char[]){ 'S','U','P','E','R','O','N','L','I','N','E','-','W','i','F','i','_','2','4','8','1','1' },
sizeof(arr)); //memcpy to arr struct works..
ULONG len = 22;
pSsid->uSSIDLength = len;
memcpy(pSsid->ucSSID, arr, sizeof(arr)); // this line fails still..
编辑:我运行了大卫提到的-Wall -Wextra -pedantic -Werror
和下面的代码段:
PDOT11_SSID pSsid;
memset(pSsid->ucSSID, '\0', 32); //fails
我得到这个错误
但如果我用
PDOT11_SSID pSsid = { 0 };
或
PDOT11_SSID pSsid = NULL;
它编译了,但是我得到了上面我曾经得到的崩溃图像。。重要的是要注意,memset(pSsid->ucSSID, '\0', 32);
也会导致崩溃。我可以通过注解掉每一行并再次编译/运行来知道这一点。
这是一个负担,因为我还没有弄清楚如何添加SSID密码与wlanapi.h
,所以帮助这些将非常感谢我继续前进。
友情提示:我使用basic gcc来编译gcc.exe wlan.c -lwlanapi
,如果有任何解决方案代码可以使用wlanapi连接到ssid
和password
的ssid,也希望有链接。
从msdn连接的WLAN是this link..我看不到任何安全参数,如何设置要连接的SSID的密码?
1条答案
按热度按时间p8h8hvxi1#
这是你一直在寻找的: