Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die WLAN_RADIO_STATE Struktur gibt den Funkzustand in einer Liste der PHY-Typen (Physical Layer) an.
Syntax
typedef struct _WLAN_RADIO_STATE {
DWORD dwNumberOfPhys;
WLAN_PHY_RADIO_STATE PhyRadioState[WLAN_MAX_PHY_INDEX];
} WLAN_RADIO_STATE, *PWLAN_RADIO_STATE;
Elemente
dwNumberOfPhys
Die Anzahl der gültigen PHY-Indizes im PhyRadioState-Element .
PhyRadioState[WLAN_MAX_PHY_INDEX]
Ein Array von WLAN_PHY_RADIO_STATE Strukturen, die die Funkzustände einer Reihe von PHY-Indizes angeben. Nur die ersten dwNumberOfPhys-Einträge in diesem Array sind gültig. WLAN_MAX_PHY_INDEX ist auf 64 festgelegt.
Bemerkungen
Die WLAN_RADIO_STATE-Struktur wird mit der WlanQueryInterface-Funktion verwendet, wenn der OpCode-Parameter auf wlan_intf_opcode_radio_state festgelegt ist. Wenn der Aufruf erfolgreich ist, verweist der ppData-Parameter auf eine WLAN_RADIO_STATE Struktur.
Die WLAN_PHY_RADIO_STATE Strukturmember in der WLAN_RADIO_STATE-Struktur können mit der WlanSetInterface-Funktion verwendet werden, wenn der OpCode-Parameter auf wlan_intf_opcode_radio_state festgelegt ist, um den Funkzustand zu ändern.
Die WLAN_PHY_RADIO_STATE-Struktur wird auch für die Benachrichtigung durch das medienspezifische Modul (MSM) verwendet, wenn sich der Funkzustand ändert. Eine Anwendung registriert sich für den Empfang von MSM-Benachrichtigungen durch Aufrufen der WlanRegisterNotification-Funktion , wobei der dwNotifSource-Parameter auf einen Wert festgelegt ist, der WLAN_NOTIFICATION_SOURCE_MSM enthält. Weitere Informationen zu diesen Benachrichtigungen finden Sie in der WLAN_NOTIFICATION_DATA Struktur und im WLAN_NOTIFICATION_MSM Enumerationsverweis.
Examples
Im folgenden Beispiel werden die DRAHTLOS-LAN-Schnittstellen auf dem lokalen Computer aufgelistet, die einzelnen Schnittstellen für die WLAN_RADIO_STATE auf der Schnittstelle abgefragt und Werte aus der abgerufenen WLAN_RADIO_STATE Struktur gedruckt.
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <wlanapi.h>
#include <objbase.h>
#include <wtypes.h>
#include <stdio.h>
#include <stdlib.h>
// Need to link with Wlanapi.lib and Ole32.lib
#pragma comment(lib, "wlanapi.lib")
#pragma comment(lib, "ole32.lib")
int wmain()
{
// Declare and initialize variables.
HANDLE hClient = NULL;
DWORD dwMaxClient = 2; //
DWORD dwCurVersion = 0;
DWORD dwResult = 0;
DWORD dwRetVal = 0;
int iRet = 0;
WCHAR GuidString[39] = { 0 };
unsigned int i;
// variables used for WlanEnumInterfaces
PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
PWLAN_INTERFACE_INFO pIfInfo = NULL;
// variables used for WlanQueryInterfaces for opcode = wlan_intf_opcode_radio_state
PWLAN_RADIO_STATE pradioStateInfo = NULL;
DWORD radioStateInfoSize = sizeof (WLAN_RADIO_STATE);
WLAN_OPCODE_VALUE_TYPE opCode = wlan_opcode_value_type_invalid;
dwResult = WlanOpenHandle(dwMaxClient, NULL, &dwCurVersion, &hClient);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WlanOpenHandle failed with error: %u\n", dwResult);
return 1;
// You can use FormatMessage here to find out why the function failed
}
dwResult = WlanEnumInterfaces(hClient, NULL, &pIfList);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WlanEnumInterfaces failed with error: %u\n", dwResult);
return 1;
// You can use FormatMessage here to find out why the function failed
} else {
wprintf(L"Num Entries: %lu\n", pIfList->dwNumberOfItems);
wprintf(L"Current Index: %lu\n", pIfList->dwIndex);
for (i = 0; i < (int) pIfList->dwNumberOfItems; i++) {
pIfInfo = (WLAN_INTERFACE_INFO *) & pIfList->InterfaceInfo[i];
wprintf(L" Interface Index[%u]:\t %lu\n", i, i);
iRet =
StringFromGUID2(pIfInfo->InterfaceGuid, (LPOLESTR) & GuidString,
sizeof (GuidString) / sizeof (*GuidString));
// For c rather than C++ source code, the above line needs to be
// iRet = StringFromGUID2(&pIfInfo->InterfaceGuid, (LPOLESTR) &GuidString,
// sizeof(GuidString)/sizeof(*GuidString));
if (iRet == 0)
wprintf(L"StringFromGUID2 failed\n");
else {
wprintf(L" InterfaceGUID[%d]:\t %ws\n", i, GuidString);
}
wprintf(L" Interface Description[%d]: %ws", i, pIfInfo->strInterfaceDescription);
wprintf(L"\n");
wprintf(L" Interface State[%d]:\t ", i);
switch (pIfInfo->isState) {
case wlan_interface_state_not_ready:
wprintf(L"Not ready\n");
break;
case wlan_interface_state_connected:
wprintf(L"Connected\n");
break;
case wlan_interface_state_ad_hoc_network_formed:
wprintf(L"First node in a ad hoc network\n");
break;
case wlan_interface_state_disconnecting:
wprintf(L"Disconnecting\n");
break;
case wlan_interface_state_disconnected:
wprintf(L"Not connected\n");
break;
case wlan_interface_state_associating:
wprintf(L"Attempting to associate with a network\n");
break;
case wlan_interface_state_discovering:
wprintf(L"Auto configuration is discovering settings for the network\n");
break;
case wlan_interface_state_authenticating:
wprintf(L"In process of authenticating\n");
break;
default:
wprintf(L"Unknown state %ld\n", pIfInfo->isState);
break;
}
wprintf(L"\n");
dwResult = WlanQueryInterface(hClient,
&pIfInfo->InterfaceGuid,
wlan_intf_opcode_radio_state,
NULL,
&radioStateInfoSize,
(PVOID *) & pradioStateInfo, &opCode);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WlanQueryInterface failed with error: %u\n", dwResult);
dwRetVal = 1;
// You can use FormatMessage to find out why the function failed
} else {
wprintf(L" WLAN_RADIO_STATE for this interface\n");
wprintf(L" Number of valid PHYs:\t %u\n", pradioStateInfo->dwNumberOfPhys);
wprintf(L" Radio state:\n");
wprintf(L" Index of PHYs type[0]:\t %u\n",
pradioStateInfo->PhyRadioState[0].dwPhyIndex);
wprintf(L" Software radio state[0]:\t ");
switch (pradioStateInfo->PhyRadioState[0].dot11SoftwareRadioState) {
case dot11_radio_state_unknown:
wprintf(L"Unknown\n");
break;
case dot11_radio_state_on:
wprintf(L"On\n");
break;
case dot11_radio_state_off:
wprintf(L"Off\n");
break;
default:
wprintf(L"Other Unknown state %ld\n", pradioStateInfo->PhyRadioState[0].dot11SoftwareRadioState);
break;
}
wprintf(L" Hardware radio state[0]:\t ");
switch (pradioStateInfo->PhyRadioState[0].dot11HardwareRadioState) {
case dot11_radio_state_unknown:
wprintf(L"Unknown\n");
break;
case dot11_radio_state_on:
wprintf(L"On\n");
break;
case dot11_radio_state_off:
wprintf(L"Off\n");
break;
default:
wprintf(L"Other Unknown state %ld\n", pradioStateInfo->PhyRadioState[0].dot11HardwareRadioState);
break;
}
wprintf(L"\n");
}
}
}
if (pradioStateInfo != NULL) {
WlanFreeMemory(pradioStateInfo);
pradioStateInfo = NULL;
}
if (pIfList != NULL) {
WlanFreeMemory(pIfList);
pIfList = NULL;
}
return dwRetVal;
}
Anforderungen
| Anforderung | Wert |
|---|---|
| Mindestens unterstützter Client | Windows Vista [nur Desktop-Apps] |
| Mindestanforderungen für unterstützte Server | Windows Server 2008 [Nur Desktop-Apps] |
| Header | wlanapi.h |