Wlanconnect не работает с bssid в win8, но то же самое работает в win7

Я пытаюсь подключиться к сети Wi-Fi с помощью bssid в ситуации, когда есть несколько точек доступа (SSID) с тем же именем, но с другим bssid. Пример соответствующего кода, который я использую:

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);

Проблема в том, что код правильно работает на 3 машинах с win7, но в win8 он возвращает 50 (ERROR_NOT_SUPPPORTED). Разница лишь в том, что win 8 установлен в vm. но одна из win7 также установлена ​​в vm.

но если бы я использовал

list.uNumOfEntries = 0;

тогда он соединяется, но не с тем, кого я желаю.

Одна вещь, которую я заметил, когда я увидел экспортированную функцию dll wlanapi.dll для win7 и win 8, используя DLL Export Viewer

Количество функций в win7 меньше, чем в win8.

в win7 есть только

WlanConnect

но в win8 тоже есть

WlanConnect
WlanConnectEx
WlanConnectWithInput

но в заголовочном файле wlanapi.h (я использую Visual Studio Express 13) WlanConnectEx и WlanConnectWithInput не существует. Я проверяю MSDN, и только некоторые новые функции присутствуют.

В итоге

я) Это потому, что ОС работает в VM? (но один из Win7 также работает в VM)

ii) Что-то отсутствует в коде, например, какое должно быть значение в заголовке или списке?

iii) Возможно ли, что соединение с bssid было перенесено в эти новые функции?

iv) Если это так, где я могу получить правильный заголовочный файл для этих новых функций?

v) Это будет в последней версии Win SDK? (Это я проверю после того, как я отправлю это)

Vi) Можно ли будет узнать, какие параметры требуются для этих новых функций, без заголовочного файла (возможно, не возможно, но на всякий случай).

РЕДАКТИРОВАТЬ: обнаружил, что это не проблема API, а проблема водителя. В Wi-Fi не было драйвера Win8, а только драйвер win7. Поменял адаптер на тот, на котором был драйвер win8 и он теперь работает. Хотя немного странно, что функционал, работающий в старых ОС, не будет работать в новой системе (без обратной совместимости?). Или, может быть, он загрузил драйвер xp как общий. И xp не поддерживает список BSSID. К сожалению, я проверил оригинальный адаптер чипсета и его Atheros. (Адаптер изготовлен другим производителем, но чипсет Atheros, а требуемый драйвер для AR9170). И им еще предстоит выпустить драйвер win8. Я пытался найти один, но пока не смог найти.

Но вопросы для заголовочного файла для новой функции все еще применимы.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]