#ifndef WIFI_INCLUDED #define WIFI_INCLUDED #include #include class IWifiListener { public: // Will be called with new access points when performing a scan virtual void OnBSSID(const NDIS_WLAN_BSSID& bssid)=0; }; // Main class class CWifi { public: /// @brief Constructor. /// @param bufferLength Internal buffer size when performing scans. /// The default value should be large enough. CWifi(unsigned long bufferLength=16384); ~CWifi(); /// @brief Return the currently seen access points (if any), /// and init a new scan. /// @param listener A IWifiListener refererence. /// @return true if a new scan has been initialized, false if an error /// occurred. /// @note This call is blocking. bool Scan(IWifiListener& listener); const wchar_t* const DeviceName() const; private: void FindDeviceName(); bool InitNewScan(); bool Enumerate(IWifiListener& listener); private: wchar_t* m_pDeviceName; unsigned long m_ulBufferLength; unsigned char* m_pIoCtlBuffer; }; inline const wchar_t* const CWifi::DeviceName() const { return m_pDeviceName; } #endif // WIFI_INCLUDED