Найти канал с помощью Windows API

Я пытаюсь получить канал с помощью Windows API. До сих пор я пытался использовать wlan_intf_opcode_channel_number с функцией WlanQueryInterface. Я не слишком уверен, что означает ответ в этой ветке, и надеялся, что кто-нибудь сможет уточнить.

ULONG channel = 0;
DWORD dwSizeChannel = sizeof(channel);

dwResult = WlanQueryInterface(
    hClient, 
    InterfaceGuid, 
    wlan_intf_opcode_channel_number, 
    NULL, 
    &dwSizeChannel, 
    (PVOID*)&channel, 
    NULL);

Я не уверен, что делать после здесь. Любая помощь будет оценена! После проверки я обнаружил, что всегда получаю то же значение, что и канал, до вызова WlanQueryInterface

2 ответа

Документы MS для кода операции, кажется, не так. Если вы попробуете что-то подобное здесь:

ULONG * канал = NULL;
DWORD dwSizeChannel = sizeof(* канал);

DWORD rc = WlanQueryInterface (
  hClient, InterfaceGuid, 
  wlan_intf_opcode_channel_number, 
  NULL, &dwSizeChannel, &channel, NULL);

if (rc == ERROR_SUCCESS && channel) {
  printf ("Канал: %lu\n", * канал):
  WlanFreeMemory (канал);
}

Я получаю ожидаемое

Канал: 5 
,

То же самое касается wlan_intf_opcode_current_operation_mode и, возможно, других оп-кодов, которые просто ULONG.

Я опробовал WlanQueryInterface со входами из документации: https://msdn.microsoft.com/en-us/library/windows/desktop/ms706765(v=vs.85).aspx

Когда запрос, основанный на "wlan_intf_opcode_channel_number", был запущен, я получил данные как "13". И частота может быть определена как 2472 МГц из информации WLAN, предоставленной по следующей ссылке википедии: https://en.wikipedia.org/wiki/List_of_WLAN_channels

Надеюсь это поможет.

Другие вопросы по тегам