千家信息网

VC++ win7下怎么实现WIFI共享工具

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了" VC++ win7下怎么实现WIFI共享工具",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习" VC++ win7下怎么实现WIFI
千家信息网最后更新 2026年11月03日VC++ win7下怎么实现WIFI共享工具

这篇文章主要讲解了" VC++ win7下怎么实现WIFI共享工具",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习" VC++ win7下怎么实现WIFI共享工具"吧!

关于无线承载网络

无线承载网络(Wireless Hosted Network)是指安装有无线局域网服务的Windows 7和Windows Server 2008 R2所提供的一种WLAN功能,具备两项主要功能:

第一、把一个物理无线网卡虚拟化成一个或多个虚拟无线网卡,称为虚拟的WiFi。

第二、借助无线网卡把当前接网络虚拟成为一个基于软件的无线接入点,称为虚拟AP或软AP。

=========================万恶的分割线===========================

项目需要包含wlanapi.h 头文件和wlanapi.lib 库

备注:测试环境win7_64,建议关闭一些安全软件,(比如我测试的时候忘了关comodo导致防火墙总是拒绝其他设备的连接)。

=============================================================

功能不复杂,用到的主要函数有下面几个

1.调用WlanOpenHandled得到一个连接hClientHandle,下面的操作都要用到这个连接。当然程序退出的时候记得调用WlanCloseHandle关闭这个连接。

DWORD WINAPI WlanOpenHandle(  _In_        DWORD dwClientVersion,  _Reserved_  PVOID pReserved,  _Out_       PDWORD pdwNegotiatedVersion,  _Out_       PHANDLE phClientHandle);DWORD WINAPI WlanCloseHandle(  _In_        HANDLE hClientHandle,  _Reserved_  PVOID pReserved);



2.下面的函数用来设置承载网络的一些属性。

DWORD WINAPI WlanHostedNetworkSetProperty(  _In_        HANDLE hClientHandle,  _In_        WLAN_HOSTED_NETWORK_OPCODE OpCode,  _In_        DWORD dwDataSize,  _In_        PVOID pvData,  _Out_opt_   PWLAN_HOSTED_NETWORK_REASON pFailReason,  _Reserved_  PVOID pvReserved);typedef enum _WLAN_HOSTED_NETWORK_OPCODE {   wlan_hosted_network_opcode_connection_settings,          //设置一些连接属性  wlan_hosted_network_opcode_security_settings,            //设置安全属性  wlan_hosted_network_opcode_station_profile,              //query the wireless Hosted Network station profile  wlan_hosted_network_opcode_enable                        //query or set the wireless Hosted Network enabled flag} WLAN_HOSTED_NETWORK_OPCODE, *PWLAN_HOSTED_NETWORK_OPCODE;

3.启用和禁用无线承载网络。

打开网络和共享中心 单击更改适配器设置,如果启用了无线承载网络 面板里面就会有描述为Microsoft Virtual WiFi Miniport Adapter的一个虚拟网卡。禁用之后这个虚拟网卡就会消失了。

当然只有启用了无线承载网络才能分享wifi啦

DWORD WINAPI WlanHostedNetworkForceStart(  _In_        HANDLE hClientHandle,  _Out_opt_   PWLAN_HOSTED_NETWORK_REASON pFailReason,  _Reserved_  PVOID pvReserved);
DWORD WINAPI WlanHostedNetworkForceStop(  _In_        HANDLE hClientHandle,  _Out_opt_   PWLAN_HOSTED_NETWORK_REASON pFailReason,  _Reserved_  PVOID pvReserved);


4.连接和断开网络

DWORD WINAPI WlanHostedNetworkStartUsing(  _In_        HANDLE hClientHandle,  _Out_opt_   PWLAN_HOSTED_NETWORK_REASON pFailReason,  _Reserved_  PVOID pvReserved);
DWORD WINAPI WlanHostedNetworkStopUsing(  _In_        HANDLE hClientHandle,  _Out_opt_   PWLAN_HOSTED_NETWORK_REASON pFailReason,  _Reserved_  PVOID pvReserved);

5.用来查询承载网络的网络状况。

DWORD WINAPI WlanHostedNetworkQueryStatus(  _In_        HANDLE hClientHandle,  _Out_       PWLAN_HOSTED_NETWORK_STATUS *ppWlanHostedNetworkStatus,  _Reserved_  PVOID pvReserved);
typedef struct _WLAN_HOSTED_NETWORK_STATUS {  WLAN_HOSTED_NETWORK_STATE      HostedNetworkState;  GUID                           IPDeviceID;  DOT11_MAC_ADDRESS              wlanHostedNetworkBSSID;  DOT11_PHY_TYPE                 dot11PhyType;  ULONG                          ulChannelFrequency;  DWORD                          dwNumberOfPeers;            //已连接的节点数目  WLAN_HOSTED_NETWORK_PEER_STATE PeerList[1];                //存放节点信息的数组} WLAN_HOSTED_NETWORK_STATUS, *PWLAN_HOSTED_NETWORK_STATUS;typedef struct _WLAN_HOSTED_NETWORK_PEER_STATE {  DOT11_MAC_ADDRESS                   PeerMacAddress;        //节点设备的MAC地址  WLAN_HOSTED_NETWORK_PEER_AUTH_STATE PeerAuthState;            //节点的认证状态} WLAN_HOSTED_NETWORK_PEER_STATE, *PWLAN_HOSTED_NETWORK_PEER_STATE;

调用WlanHostedNetworkQueryStatus将得到一个WLAN_HOSTED_NETWORK_STATUS结构体,就可以查询一些网络基本信息了,比如dwNumberOfPeers连接到这个网络的节点数,PeerList数组存放着对应节点的详细信息,包括MAC地址和认证状态。

6.用来设置密码

注意密码长度必须 大于8 小于63 否则会调用失败

DWORD WINAPI WlanHostedNetworkSetSecondaryKey(  _In_        HANDLE hClientHandle,  _In_        DWORD dwKeyLength,  _In_        PUCHAR pucKeyData,  _In_        BOOL bIsPassPhrase,  _In_        BOOL bPersistent,  _Out_opt_   PWLAN_HOSTED_NETWORK_REASON pFailReason,  _Reserved_  PVOID pvReserved);

======================贴代码==========================


//WIFIMAIN.h  实现文件#pragma once#include #pragma comment(lib,"wlanapi.lib")// WIFIMAINclass WIFIMAIN : public CWnd{        DECLARE_DYNAMIC(WIFIMAIN)public:        WIFIMAIN();        virtual ~WIFIMAIN();protected:        DECLARE_MESSAGE_MAP()private:        bool allow;        bool start;        HANDLE hClient;public:        int Init(void);        int AllowHostedNetWork(void);        int DisallowHostedNetWork(void);        int StartHostedNetWork(void);        int StopHostedNetWork(void);        bool isStart(void);        bool isAllow(void);        int Resume(void);        int getpeernumber(void);        int SetKEY(CString key);        int SetSSID(CString ssidname);};



// WIFIMAIN.cpp : 实现文件//#include "stdafx.h"#include "wifi共享1028.h"#include "WIFIMAIN.h"// WIFIMAINIMPLEMENT_DYNAMIC(WIFIMAIN, CWnd)WIFIMAIN::WIFIMAIN(): allow(false), start(false){        Init();}WIFIMAIN::~WIFIMAIN(){        StopHostedNetWork();        WlanCloseHandle(hClient, NULL);}BEGIN_MESSAGE_MAP(WIFIMAIN, CWnd)END_MESSAGE_MAP()// WIFIMAIN 消息处理程序int WIFIMAIN::Init(void){        DWORD dwCurVersion = 0;    DWORD dwResult = 0;        dwResult = WlanOpenHandle(WLAN_API_VERSION, NULL, &dwCurVersion, &hClient);        if( ERROR_SUCCESS != dwResult )        {                return -1;        }        BOOL bIsAllow = true;    WLAN_HOSTED_NETWORK_REASON dwFailedReason;        dwResult = WlanHostedNetworkSetProperty(hClient,                                                                                        wlan_hosted_network_opcode_enable,                                                                                         sizeof(BOOL),                                                                                        &bIsAllow,                                                                                        &dwFailedReason,                                                                                        NULL);        if( ERROR_SUCCESS != dwResult )        {                return -2;        }                return 0;}int WIFIMAIN::AllowHostedNetWork(void){        PWLAN_HOSTED_NETWORK_REASON pFailReason = NULL;                DWORD dwResult= 0;        dwResult=WlanHostedNetworkForceStart(hClient,pFailReason,NULL);        if( dwResult != ERROR_SUCCESS )        {                return -1;        }        allow=true;        return 0;}int WIFIMAIN::DisallowHostedNetWork(void){        PWLAN_HOSTED_NETWORK_REASON pFailReason = NULL;        DWORD dwResult= 0;        dwResult=WlanHostedNetworkForceStop(hClient,pFailReason,NULL);        if( dwResult != ERROR_SUCCESS )        {                return -1;        }        allow=false;        return 0;}int WIFIMAIN::StartHostedNetWork(void){        PWLAN_HOSTED_NETWORK_REASON pFailReason = NULL;        DWORD dwResult= 0;        dwResult=WlanHostedNetworkStartUsing(hClient,pFailReason,NULL);        if( dwResult != ERROR_SUCCESS )        {                return -1;        }        start=true;        return 0;}int WIFIMAIN::StopHostedNetWork(void){        PWLAN_HOSTED_NETWORK_REASON pFailReason = NULL;        DWORD dwResult= 0;        dwResult=WlanHostedNetworkStopUsing(hClient,pFailReason,NULL);        if( dwResult != ERROR_SUCCESS )        {                return -1;        }        start=false;        return 0;}bool WIFIMAIN::isStart(void){        return start;}bool WIFIMAIN::isAllow(void){        return allow;}int WIFIMAIN::Resume(void){        DWORD dwResult = 0;            BOOL bIsAllow = false;    WLAN_HOSTED_NETWORK_REASON dwFailedReason;        dwResult = WlanHostedNetworkSetProperty(hClient,                                                                                        wlan_hosted_network_opcode_enable,                                                                                         sizeof(BOOL),                                                                                        &bIsAllow,                                                                                        &dwFailedReason,                                                                                        NULL);        if( ERROR_SUCCESS != dwResult )        {                return -2;        }                return 0;}int WIFIMAIN::getpeernumber(void){        PWLAN_HOSTED_NETWORK_STATUS ppWlanHostedNetworkStatus=NULL;        int retval = WlanHostedNetworkQueryStatus(hClient,&ppWlanHostedNetworkStatus,NULL);        if(  retval != ERROR_SUCCESS ){                return -1;        }        return ppWlanHostedNetworkStatus->dwNumberOfPeers;}int WIFIMAIN::SetKEY(CString key){        char chkey[64];        int index;        for(index=0; index

感谢各位的阅读,以上就是" VC++ win7下怎么实现WIFI共享工具"的内容了,经过本文的学习后,相信大家对 VC++ win7下怎么实现WIFI共享工具这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

网络 无线 网卡 节点 工具 信息 功能 属性 文件 无线网卡 学习 安全 内容 函数 地址 密码 数组 时候 状态 程序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 上海喔噻互联网科技有限公司 南京欣网互联网络科技有限公司 互联网科技卖菜 有马互联网科技 广西互联网科技公司 海南购全球互联网科技 成都铂石互联网科技做什么的 互联网和黑科技的看法 威龙国际互联网科技公司 沐思想互联网科技有限公司 梅州GM互联网络科技有限公司 杭州披云加互联网科技有限公司 四川互联网展示科技馆设计 保山互联网科技靠谱吗 科技信息时代互联网发展 科技互联网公司两年变化 互联网对科技影响 长沙易易互联网科技有限公司 互联网企业和网络科技有限公司 互联网的科技 今日互联网科技 互联网 科技服务平台 科技伦理 互联网公司 金融科技与互联网金融相同和不同 浙南科技城互联网大厦建设工程 半导体是互联网高科技吗 卡尔迅互联网科技有限公司 互联网时代科技型公司的机会 互联网科技大会大佬
0