【问题标题】:Wifi Management on XP (SP2/SP3)XP 上的 Wifi 管理 (SP2/SP3)
【发布时间】:2010-09-07 02:19:00
【问题描述】:

Vista 上的 Wifi 支持很好,但 Native Wifi on XP 是半生不熟。 NDIS 802.11 Wireless LAN Miniport Drivers 只能让你部分到达那里(例如网络扫描)。根据我的阅读(和尝试),XP 上的 802.11 NDIS 驱动程序不允许允许您配置无线连接。您必须使用本机 Wifi API 才能执行此操作。 (如果我在这里错了,请纠正我。)InSSIDer 之类的应用程序帮助我理解了 API,但 InSSIDer 只是一个扫描仪,并非旨在配置 Wifi 网络。

所以,问题是:我在哪里可以找到一些处理 XP 上 Wifi 网络配置的代码示例(C# 或 C++)——例如配置文件创建和连接管理?

我应该注意,这是一个封闭系统上的 XP Embedded 应用程序,我们不能使用内置的无线零配置 (WZC)。我们必须将所有 Wifi 管理功能构建到我们的 .NET 应用程序中。

是的,我用谷歌搜索了自己的蓝色。似乎有人应该有解决这个问题的方法,但我找不到。这就是我在这里问的原因。

谢谢。

【问题讨论】:

    标签: networking windows-xp wireless wifi


    【解决方案1】:

    我们在 XP 上使用 WZC,在 Vista 上使用 Native WiFi,但这是我们在 Vista 上使用的代码 FWIW。

    个人资料创建:

    // open a handle to the service
    if ((dwError = WlanOpenHandle(
            WLAN_API_VERSION,
            NULL,               // reserved
            &dwServiceVersion,
            &hClient
            )) != ERROR_SUCCESS)
    {
    hClient = NULL;
    }
    return dwError;
    dwError=WlanSetProfile(hClient, &guid, 0, profile, NULL, TRUE, NULL, &reason_code);
    

    建立联系:

        WLAN_CONNECTION_PARAMETERS conn;
    
        conn.wlanConnectionMode=wlan_connection_mode_profile;
        conn.strProfile=name;
        conn.pDot11Ssid=NULL;
        conn.pDesiredBssidList=NULL;
        conn.dot11BssType=dot11_BSS_type_independent;
        conn.dwFlags=NULL;
    
        dwError = WlanConnect(hClient, &guid, &conn, NULL);
    

    检查连接:

        BOOL ret=FALSE;
        DWORD dwError;
        DWORD size;
        void *p=NULL;
        WLAN_INTERFACE_STATE *ps;
    
        dwError = WlanQueryInterface(hClient, &guid, wlan_intf_opcode_interface_state, NULL, &size, &p, NULL);
        ps=(WLAN_INTERFACE_STATE *)p;
        if(dwError!=0) 
            ret=FALSE;
        else
            if(*ps==wlan_interface_state_connected) 
                ret=TRUE;
        if(p!=NULL) WlanFreeMemory(p);
        return ret;
    

    要保持与网络的连接,只需生成一个线程,然后继续检查连接,然后在需要时重新连接。

    编辑:伙计,这个标记的东西很蹩脚。需要我进行 3 次编辑才能正确处理问题。

    【讨论】:

      【解决方案2】:

      感谢尼克的反馈。我几乎已经让配置文件和连接管理工作了。诀窍在于找出 XP 上不支持 Native Wifi API 的哪些部分。幸运的是,Managed Wifi API 具有在 XP 上工作的连接/断开通知事件(NetworkChange 也提供类似的更改事件)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 2010-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        相关资源
        最近更新 更多