VC++用wlanapi进行WIFI网络的获取与连接时,wlansetprofile和wlanConnect函数的使用

malliarage699 2012-07-05 11:47:46
本人近接着手于实现VC++调用wlanapi,实现WIFI网络的扫描获取以及选择其中一个进行连接,但是始终达不到所想要的效果,因此在这里求高人指点.关于wlanConnect与wlanSetProfile这两个的函数的使用方法,特别是后一个,以及wlanSetProfile函数的,关于wifi加密认证方式的xml文件的细则,就是wlanSetProfile函数的中第四个参数:strProfileXml
...全文
3653 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
木子若 2014-05-06
  • 打赏
  • 举报
回复
您好!我现在正在做这个检测到WIFi检测连接WiFi,请赐教
zhiyayan 2012-08-28
  • 打赏
  • 举报
回复
mark 同求怎么连接~想做一个wifi破解~哈哈
alwgg 2012-07-24
  • 打赏
  • 举报
回复
是啊,这个问题.. 好像网上也很少有介绍的..都是扫描得到ssid 和信号的强度..至于接下来.怎么连接ssid介绍的就少的可怜了...各位虾客.如果你们研究出来了也给我一份啊...我的236289834@qq.com 感激不尽
malliarage699 2012-07-13
  • 打赏
  • 举报
回复
8楼的..为嘛只有头文件.身子呢.....
jn_ios_vc_symbian 2012-07-12
  • 打赏
  • 举报
回复
贴代码了,好害怕啊
头文件
#ifndef _WIFI_SEARCH_CONNECTION_H_
#define _WIFI_SEARCH_CONNECTION_H_

#define WM_WLAN_NOTIFICATION WM_USER+200

#define DOT11_SSID_MAX_LENGTH 32
#define WLAN_MAX_PHY_TYPE_NUMBER 8
#define WLAN_MAX_NAME_LENGTH 256

class WifiConnection
{
public:
WifiConnection();

~WifiConnection();

private:
typedef enum _WLAN_INTERFACE_STATE
{
wlan_interface_state_not_ready = 0,
wlan_interface_state_connected = 1,
wlan_interface_state_ad_hoc_network_formed = 2,
wlan_interface_state_disconnecting = 3,
wlan_interface_state_disconnected = 4,
wlan_interface_state_associating = 5,
wlan_interface_state_discovering = 6,
wlan_interface_state_authenticating =7
}WLAN_INTERFACE_STATE, *PWLAN_INTERFACE_STATE;

typedef struct _WLAN_INTERFACE_INFO
{
GUID InterfaceGuid;
WCHAR strInterfaceDescription[256];
WLAN_INTERFACE_STATE isState;
}WLAN_INTERFACE_INFO,*PWLAN_INTERFACE_INFO;

typedef struct _WLAN_INTERFACE_INFO_LIST
{
DWORD dwNumberOfItems;
DWORD dwIndex;
WLAN_INTERFACE_INFO InterfaceInfo[];
}WLAN_INTERFACE_INFO_LIST, *PWLAN_INTERFACE_INFO_LIST;

typedef struct _DOT11_SSID
{
ULONG uSSIDLength;
UCHAR ucSSID[DOT11_SSID_MAX_LENGTH];
}DOT11_SSID, *PDOT11_SSID;

typedef enum _DOT11_BSS_TYPE
{
dot11_BSS_type_infrastructure = 1,
dot11_BSS_type_independent = 2,
dot11_BSS_type_any = 3
}DOT11_BSS_TYPE, *PDOT11_BSS_TYPE;

typedef DWORD WLAN_REASON_CODE, *PWLAN_REASON_CODE;

typedef enum _DOT11_PHY_TYPE
{
dot11_phy_type_unknown = 0,
dot11_phy_type_any = 0,
dot11_phy_type_fhss = 1,
dot11_phy_type_dsss = 2,
dot11_phy_type_irbaseband = 3,
dot11_phy_type_ofdm = 4,
dot11_phy_type_hrdsss = 5,
dot11_phy_type_erp = 6,
dot11_phy_type_ht = 7,
dot11_phy_type_IHV_start = 0x80000000,
dot11_phy_type_IHV_end = 0xffffffff
}DOT11_PHY_TYPE, *PDOT11_PHY_TYPE;

typedef ULONG WLAN_SIGNAL_QUALITY, *PWLAN_SIGNAL_QUALITY;

typedef enum _DOT11_AUTH_ALGORITHM
{
DOT11_AUTH_ALGO_80211_OPEN = 1,
DOT11_AUTH_ALGO_80211_SHARED_KEY = 2,
DOT11_AUTH_ALGO_WPA = 3,
DOT11_AUTH_ALGO_WPA_PSK = 4,
DOT11_AUTH_ALGO_WPA_NONE = 5,
DOT11_AUTH_ALGO_RSNA = 6,
DOT11_AUTH_ALGO_RSNA_PSK = 7,
DOT11_AUTH_ALGO_IHV_START = 0x80000000,
DOT11_AUTH_ALGO_IHV_END = 0xffffffff
} DOT11_AUTH_ALGORITHM, *PDOT11_AUTH_ALGORITHM;

typedef enum _DOT11_CIPHER_ALGORITHM
{
DOT11_CIPHER_ALGO_NONE = 0x00,
DOT11_CIPHER_ALGO_WEP40 = 0x01,
DOT11_CIPHER_ALGO_TKIP = 0x02,
DOT11_CIPHER_ALGO_CCMP = 0x04,
DOT11_CIPHER_ALGO_WEP104 = 0x05,
DOT11_CIPHER_ALGO_WPA_USE_GROUP = 0x100,
DOT11_CIPHER_ALGO_RSN_USE_GROUP = 0x100,
DOT11_CIPHER_ALGO_WEP = 0x101,
DOT11_CIPHER_ALGO_IHV_START = 0x80000000,
DOT11_CIPHER_ALGO_IHV_END = 0xffffffff
} DOT11_CIPHER_ALGORITHM, *PDOT11_CIPHER_ALGORITHM;

typedef struct _WLAN_AVAILABLE_NETWORK
{
WCHAR strProfileName[256];
DOT11_SSID dot11Ssid;
DOT11_BSS_TYPE dot11BssType;
ULONG uNumberOfBssids;
BOOL bNetworkConnectable;
WLAN_REASON_CODE wlanNotConnectableReason;
ULONG uNumberOfPhyTypes;
DOT11_PHY_TYPE dot11PhyTypes[WLAN_MAX_PHY_TYPE_NUMBER];
BOOL bMorePhyTypes;
WLAN_SIGNAL_QUALITY wlanSignalQuality;
BOOL bSecurityEnabled;
DOT11_AUTH_ALGORITHM dot11DefaultAuthAlgorithm;
DOT11_CIPHER_ALGORITHM dot11DefaultCipherAlgorithm;
DWORD dwFlags;
DWORD dwReserved;
}WLAN_AVAILABLE_NETWORK, *PWLAN_AVAILABLE_NETWORK;


typedef struct _WLAN_AVAILABLE_NETWORK_LIST
{
DWORD dwNumberOfItems;
DWORD dwIndex;
WLAN_AVAILABLE_NETWORK Network[1];
}WLAN_AVAILABLE_NETWORK_LIST, *PWLAN_AVAILABLE_NETWORK_LIST;

typedef struct _WLAN_PROFILE_INFO
{
WCHAR strProfileName[256];
DWORD dwFlags;
} WLAN_PROFILE_INFO, *PWLAN_PROFILE_INFO;


typedef struct _WLAN_PROFILE_INFO_LIST
{
DWORD dwNumberOfItems;
DWORD dwIndex;
WLAN_PROFILE_INFO ProfileInfo[1];
} WLAN_PROFILE_INFO_LIST, *PWLAN_PROFILE_INFO_LIST;

typedef enum _WLAN_CONNECTION_MODE
{
wlan_connection_mode_profile,
wlan_connection_mode_temporary_profile,
wlan_connection_mode_discovery_secure,
wlan_connection_mode_discovery_unsecure,
wlan_connection_mode_auto,
wlan_connection_mode_invalid
} WLAN_CONNECTION_MODE, *PWLAN_CONNECTION_MODE;

#define NDIS_OBJECT_TYPE_DEFAULT 0x80
#define DOT11_BSSID_LIST_REVISION_1 1

typedef struct _NDIS_OBJECT_HEADER
{
UCHAR Type;
UCHAR Revision;
USHORT Size;
} NDIS_OBJECT_HEADER, *PNDIS_OBJECT_HEADER;

typedef UCHAR DOT11_MAC_ADDRESS[6];
typedef DOT11_MAC_ADDRESS *PDOT11_MAC_ADDRESS;

typedef struct _DOT11_BSSID_LIST
{
NDIS_OBJECT_HEADER Header;
ULONG uNumOfEntries;
ULONG uTotalNumOfEntries;
DOT11_MAC_ADDRESS BSSIDs[1];
} DOT11_BSSID_LIST, *PDOT11_BSSID_LIST;

typedef struct _WLAN_CONNECTION_PARAMETERS
{
WLAN_CONNECTION_MODE wlanConnectionMode;
LPCWSTR strProfile;
PDOT11_SSID pDot11Ssid;
PDOT11_BSSID_LIST pDesiredBssidList;
DOT11_BSS_TYPE dot11BssType;
DWORD dwFlags;
} WLAN_CONNECTION_PARAMETERS, *PWLAN_CONNECTION_PARAMETERS;

typedef struct _WLAN_NOTIFICATION_DATA {
DWORD NotificationSource;
DWORD NotificationCode;
GUID InterfaceGuid;
DWORD dwDataSize;
PVOID pData;
} WLAN_NOTIFICATION_DATA, *PWLAN_NOTIFICATION_DATA;

typedef struct _WLAN_CONNECTION_NOTIFICATION_DATA {
WLAN_CONNECTION_MODE wlanConnectionMode;
WCHAR strProfileName[WLAN_MAX_NAME_LENGTH];
DOT11_SSID dot11Ssid;
DOT11_BSS_TYPE dot11BssType;
BOOL bSecurityEnabled;
WLAN_REASON_CODE wlanReasonCode;
DWORD dwFlags;
WCHAR strProfileXml[1];
} WLAN_CONNECTION_NOTIFICATION_DATA, *PWLAN_CONNECTION_NOTIFICATION_DATA;

typedef struct _WLAN_MSM_NOTIFICATION_DATA {
WLAN_CONNECTION_MODE wlanConnectionMode;
WCHAR strProfileName[WLAN_MAX_NAME_LENGTH];
DOT11_SSID dot11Ssid;
DOT11_BSS_TYPE dot11BssType;
DOT11_MAC_ADDRESS dot11MacAddr;
BOOL bSecurityEnabled;
BOOL bFirstPeer;
BOOL bLastPeer;
WLAN_REASON_CODE wlanReasonCode;
} WLAN_MSM_NOTIFICATION_DATA, *PWLAN_MSM_NOTIFICATION_DATA;

typedef enum _WLAN_NOTIFICATION_MSM {
wlan_notification_msm_start = 0,
wlan_notification_msm_associating,
wlan_notification_msm_associated,
wlan_notification_msm_authenticating,
wlan_notification_msm_connected,
wlan_notification_msm_roaming_start,
wlan_notification_msm_roaming_end,
wlan_notification_msm_radio_state_change,
wlan_notification_msm_signal_quality_change,
wlan_notification_msm_disassociating,
wlan_notification_msm_disconnected,
wlan_notification_msm_peer_join,
wlan_notification_msm_peer_leave,
wlan_notification_msm_adapter_removal,
wlan_notification_msm_adapter_operation_mode_change,
wlan_notification_msm_end
} WLAN_NOTIFICATION_MSM, *PWLAN_NOTIFICATION_MSM;

typedef enum _WLAN_NOTIFICATION_ACM {
wlan_notification_acm_start = 0,
wlan_notification_acm_autoconf_enabled,
wlan_notification_acm_autoconf_disabled,
wlan_notification_acm_background_scan_enabled,
wlan_notification_acm_background_scan_disabled,
wlan_notification_acm_bss_type_change,
wlan_notification_acm_power_setting_change,
wlan_notification_acm_scan_complete,
wlan_notification_acm_scan_fail,
wlan_notification_acm_connection_start,
wlan_notification_acm_connection_complete,
wlan_notification_acm_connection_attempt_fail,
wlan_notification_acm_filter_list_change,
wlan_notification_acm_interface_arrival,
wlan_notification_acm_interface_removal,
wlan_notification_acm_profile_change,
wlan_notification_acm_profile_name_change,
wlan_notification_acm_profiles_exhausted,
wlan_notification_acm_network_not_available,
wlan_notification_acm_network_available,
wlan_notification_acm_disconnecting,
wlan_notification_acm_disconnected,
wlan_notification_acm_adhoc_network_state_change,
wlan_notification_acm_profile_unblocked,
wlan_notification_acm_screen_power_change,
wlan_notification_acm_end
} WLAN_NOTIFICATION_ACM, *PWLAN_NOTIFICATION_ACM;

#define L2_NOTIFICATION_SOURCE_NONE 0
#define L2_NOTIFICATION_SOURCE_DOT3_AUTO_CONFIG 0X00000001
#define L2_NOTIFICATION_SOURCE_SECURITY 0X00000002
#define L2_NOTIFICATION_SOURCE_ONEX 0X00000004
#define L2_NOTIFICATION_SOURCE_WLAN_ACM 0X00000008
#define L2_NOTIFICATION_SOURCE_WLAN_MSM 0X00000010
#define L2_NOTIFICATION_SOURCE_WLAN_SECURITY 0X00000020
#define L2_NOTIFICATION_SOURCE_WLAN_IHV 0X00000040
#define L2_NOTIFICATION_SOURCE_WLAN_HNWK 0X00000080

jn_ios_vc_symbian 2012-07-12
  • 打赏
  • 举报
回复
if(sss){
return;}
jn_ios_vc_symbian 2012-07-12
  • 打赏
  • 举报
回复
头段时间刚搞完一个自动连接CMCC的。已封装成类。这里怎么贴C++代码,第一次回贴,好害怕啊
useready2 2012-07-11
  • 打赏
  • 举报
回复
我也在找这个内容
WlanSetProfile 这个方法如何创建一个新的wifi热点呢?
不过我大概知道第4个参数是这样的
strProfileXml = "<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>11111</name><SSIDConfig><SSID><name>11111</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>11111</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>";
malliarage699 2012-07-05
  • 打赏
  • 举报
回复
哦..看不懂...
fuheng 2012-07-05
  • 打赏
  • 举报
回复
我的问题在这个上http://topic.csdn.net/u/20120705/14/d385feb9-c6de-49c8-8b91-f39f06ba9fb2.html?88315,简单说就是如何把802.1x认证中的用户名和密码传给该conect函数。
最开始使用的winpcap,发现不能抓到eap包只能放弃,然后选者native wifi的做,参考别人的代码能完成非加密连接。
malliarage699 2012-07-05
  • 打赏
  • 举报
回复
楼上的,,你现在手头上..了解的东东有多少了类..来交流交流吧..
fuheng 2012-07-05
  • 打赏
  • 举报
回复
mark,,,我也在做这个,,交流啊。。。
本季课程在开发板上移植USB WIFI模块(套装附带的MT7601模块),工作在ap模式下,并且用电脑通过WIFI连接开发板实现主机和开发板的无线网络局域网通信,这样就可以用WIFI网络取代板载ethernet有线网络方式来进行调试和局域网视频预览。现在很多的视频摄像头产品都要求支持无线网络连接功能,本季课程主要是针对这方面开发技术讲解的。随着通信行业发展,网速越来越快,网络也从文本代发展越过语音代到了现在视频代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同在芯片级,国产华为海思HI35XX系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧