搜尋

首頁  >  問答  >  主體

api - 如何用C++操作无线网卡开启共享热点WiFi?

如题。
猎豹WiFi,360WiFi又是怎么操作计算机无线网卡开启WiFi热点的呢?

巴扎黑巴扎黑2768 天前1083

全部回覆(1)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 12:07:49

    首先需要筆記本具備AP熱點功能,記得寫好的程式必須用管理員身分來運作。

    準備工作要先做好

    //查看是否支持的承载网络
    netsh wlan show drivers
    
    //设置网络模式为allow
    netsh wlan set hostednetwork mode=allow
    //设置wifi 热点的名称和密码
    netsh wlan set hostednetwork ssid=name key=password
    //开启已经创建好的wifi热点 
    netsh wlan start hostednetwork
    

    如果無法承載於正確的狀態,在支援承載網路的情況下,除了重複開啟外,就是驅動未啟動。
    所以要確定 microsoft託管網路虛擬適配器 為啟動狀態。
    上面是開啟的一個過程,下面是關閉。開啟後記得關閉,不能開啟再開啟。

    //关闭已经创建好的wifi热点 
    netsh wlan stop hostednetwork
    //设置网络模式disllow
    netsh wlan set hostednetwork mode=disallow
    

    上面這種方法就是簡單了,下面用API。

    思路都是開啟、設定、關閉三步驟。

    //打开句柄
    WlanOpenHandle
    
    DWORD WINAPI WlanOpenHandle(
      _In_       DWORD   dwClientVersion,
      _Reserved_ PVOID   pReserved,
      _Out_      PDWORD  pdwNegotiatedVersion,
      _Out_      PHANDLE phClientHandle
    );
    

    第二步:WlanHostedNetworkInitSettings、WlanHostedNetworkSetProperty

    //配置
    WlanHostedNetworkInitSettings
    
    The WlanHostedNetworkInitSettings function configures and persists to storage the network connection settings (SSID and maximum number of peers, for example) on the wireless Hosted Network if these settings are not already configured.
    
    DWORD WINAPI WlanHostedNetworkInitSettings(
      _In_       HANDLE                      hClientHandle,
      _Out_opt_  PWLAN_HOSTED_NETWORK_REASON pFailReason,
      _Reserved_ PVOID                       pvReserved
    );
    
    WlanHostedNetworkSetProperty
    
    The WlanHostedNetworkSetProperty function sets static properties of the wireless Hosted Network.
    
    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
    );
    

    第一key是由系統產生的,你就可以不管了,我們需要設定第二keyWlanHostedNetworkSetSecondaryKey,也是我們在使用的密碼。

    WlanHostedNetworkSetSecondaryKey
    
    The WlanHostedNetworkSetSecondaryKey function configures the secondary security key that will be used by the wireless Hosted Network.
    
    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
    );
    
    //开启AP
    WlanHostedNetworkForceStart function
    
    The WlanHostedNetworkForceStart function transitions the wireless Hosted Network to the wlan_hosted_network_active state without associating the request with the application's calling handle.
    
    DWORD WINAPI WlanHostedNetworkForceStart(
      _In_       HANDLE                      hClientHandle,
      _Out_opt_  PWLAN_HOSTED_NETWORK_REASON pFailReason,
      _Reserved_ PVOID                       pvReserved
    );
    
    //WlanHostedNetworkStartUsing
    WlanHostedNetworkStartUsing function
    The WlanHostedNetworkStartUsing function starts the wireless Hosted Network.
    
    DWORD WINAPI WlanHostedNetworkStartUsing(
      _In_       HANDLE                      hClientHandle,
      _Out_opt_  PWLAN_HOSTED_NETWORK_REASON pFailReason,
      _Reserved_ PVOID                       pvReserved
    );
    

    關閉

    WlanHostedNetworkForceStop 
    The WlanHostedNetworkForceStop function transitions the wireless Hosted Network to the wlan_hosted_network_idle without associating the request with the application's calling handle.
    
    DWORD WINAPI WlanHostedNetworkForceStop(
      _In_       HANDLE                      hClientHandle,
      _Out_opt_  PWLAN_HOSTED_NETWORK_REASON pFailReason,
      _Reserved_ PVOID                       pvReserved
    );
    
    WlanCloseHandle
    The WlanCloseHandle function closes a connection to the server.
    
    
    DWORD WINAPI WlanCloseHandle(
      _In_       HANDLE hClientHandle,
      _Reserved_ PVOID  pReserved
    );
    

    忘說了,他們都是Wlanapi.h頭文件的。

    回覆
    0
  • 取消回覆