-1

Vista での Wi-Fi サポートは問題ありませんが、XP でのネイティブ Wi-Fiは中途半端です。NDIS 802.11 ワイヤレス LAN ミニポート ドライバーは、その方法の一部 (ネットワーク スキャンなど) のみを取得します。私が読んだ (そして試した) ことから、XP の 802.11 NDIS ドライバーではワイヤレス接続を構成できません。これを行うには、Native Wifi API を使用する必要があります。(ここで間違っていたら訂正してください。) InSSIDerのようなアプリケーションは API を理解するのに役立ちましたが、InSSIDer は単なるスキャナーであり、Wifi ネットワークを構成するようには設計されていません。

問題は、XP での Wifi ネットワークの構成 (プロファイルの作成や接続管理など) を処理するコード例 (C# または C++) をどこで見つけることができるかということです。

これは、組み込みの Wireless Zero Configuration (WZC) を使用できないクローズド システム上の XP Embedded アプリケーションであることに注意してください。すべての Wifi 管理機能を .NET アプリケーションに組み込む必要があります。

はい、私は自分自身を青色でグーグルで検索しました。誰かがこの問題の解決策を持っているはずですが、見つかりません。それが私がここで尋ねている理由です。

ありがとう。

4

2 に答える 2

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回ほど編集する必要があります。

于 2008-08-28T19:11:15.357 に答える
1

フィードバックありがとうニック。プロファイルと接続管理が機能するようになりました。秘訣は、ネイティブ Wifi API のどの部分がXP でサポートされていないかを把握することです。幸いなことに、Managed Wifi APIには、XP で機能する接続/切断通知イベントがあります ( NetworkChangeも同様の変更イベントを提供します)。

于 2008-08-29T18:17:28.103 に答える