1

複数の AP (SSID) が同じ名前で異なる bssid を持つ状況で、bssid を使用して WiFi ネットワークに接続しようとしています。私が使用しているサンプル関連コードは

NDIS_OBJECT_HEADER header;
DOT11_BSSID_LIST list;
...
header.Revision = DOT11_BSSID_LIST_REVISION_1;
header.Type = 0x80;
header.Size = sizeof(header);
list.Header = header;
list.uNumOfEntries = 1;
list.uTotalNumOfEntries = 1;
list.BSSIDs[0][0] = 0xa4;
...
list.BSSIDs[0][5] = 0x00;
...
wlanConnPara.pDesiredBssidList = &list;
...
error = WlanConnect(hClient,&guidIntf,&wlanConnPara,NULL);

問題は、win7 を搭載した 3 台のマシンでコードが正しく動作することですが、win8 では 50 (ERROR_NOT_SUPPPORTED) が返されます。唯一の違いは、win 8 が vm にインストールされていることです。しかし、win7の1つはvmにもインストールされています。

しかし、私が使用した場合

list.uNumOfEntries = 0;

それは接続していますが、私が望むbssidには接続していません。

DLL Export Viewer を使用して win7 と win 8 の両方の dll wlanapi.dll のエクスポートされた関数を見たときに気づいたことの 1 つ

win7 の関数の数は win8 よりも少なくなっています。

win7にはあるだけです

WlanConnect

しかし、win8にもあります

WlanConnect
WlanConnectEx
WlanConnectWithInput

しかし、ヘッダー ファイル wlanapi.h (私は Visual Studio Express 13 を使用しています) には、WlanConnectEx と WlanConnectWithInput はありません。MSDN を確認しましたが、いくつかの新しい機能しかありません。

要約すれば

i) これは、OS が vm で実行されているためですか? (ただし、win7 の 1 つも vm で実行されています)

ii) ヘッダーやリストの値など、コードに欠けているものはありますか?

iii) bssid との接続がこれらの新しい機能に移動された可能性はありますか?

iv) その場合、この新しい関数の正しいヘッダー ファイルはどこで入手できますか?

v) 最新の Win SDK に含まれますか? (これは投稿後に確認します)

Vi) ヘッダーファイルなしで、この新しい関数が必要とするパラメータを知ることは可能ですか? (不可能かもしれませんが、念のため)

編集: API の問題ではなく、ドライバーの問題であることがわかりました。wifiにはWin8ドライバーがなく、win7ドライバーしかありませんでした。アダプターをwin8ドライバーを備えたアダプターに変更し、現在動作しています。古いOSで動作する機能が新しいシステムでは動作しないのは少し奇妙ですが(下位互換性はありませんか?)。または、XPドライバーを汎用ドライバーとしてロードした可能性があります。また、xp は BSSID リストをサポートしていません。残念ながら、元のアダプタ チップセットとそのアテロス チップセットを確認しました。(アダプターは別のベンダーによって製造されていますが、チップセットは atheros であり、必要なドライバーは AR9170 用です)。そして、彼らはまだwin8ドライバーをリリースしていません。探してみましたが、今のところ見つかりませんでした。

ただし、新しい関数のヘッダー ファイルに関する質問は引き続き適用されます。

4

0 に答える 0