Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La structure WLAN_RADIO_STATE spécifie l’état radio sur une liste de types de couche physique (PHY).
Syntaxe
typedef struct _WLAN_RADIO_STATE {
DWORD dwNumberOfPhys;
WLAN_PHY_RADIO_STATE PhyRadioState[WLAN_MAX_PHY_INDEX];
} WLAN_RADIO_STATE, *PWLAN_RADIO_STATE;
Members
dwNumberOfPhys
Nombre d’index PHY valides dans le membre PhyRadioState .
PhyRadioState[WLAN_MAX_PHY_INDEX]
Tableau de structures WLAN_PHY_RADIO_STATE qui spécifient les états radio d’un certain nombre d’indices PHY. Seules les premières entrées dwNumberOfPhys de ce tableau sont valides. WLAN_MAX_PHY_INDEX est défini sur 64.
Remarques
La structure WLAN_RADIO_STATE est utilisée avec la fonction WlanQueryInterface lorsque le paramètre OpCode est défini sur wlan_intf_opcode_radio_state. Si l’appel réussit, le paramètre ppData pointe vers une structure WLAN_RADIO_STATE .
Les membres de la structure WLAN_PHY_RADIO_STATE dans la structure WLAN_RADIO_STATE peuvent être utilisés avec la fonction WlanSetInterface lorsque le paramètre OpCode est défini sur wlan_intf_opcode_radio_state pour modifier l’état de la radio.
La structure WLAN_PHY_RADIO_STATE est également utilisée pour la notification par le module spécifique au média (MSM) lorsque l’état radio change. Une application s’inscrit pour recevoir des notifications MSM en appelant la fonction WlanRegisterNotification avec le paramètre dwNotifSource défini sur une valeur qui inclut WLAN_NOTIFICATION_SOURCE_MSM. Pour plus d’informations sur ces notifications, consultez la structure WLAN_NOTIFICATION_DATA et la référence d’énumération WLAN_NOTIFICATION_MSM .
Examples
L’exemple suivant énumère les interfaces LAN sans fil sur l’ordinateur local, interroge chaque interface pour le WLAN_RADIO_STATE de l’interface et imprime les valeurs de la structure WLAN_RADIO_STATE récupérée.
#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;
}
Spécifications
| Requirement | Valeur |
|---|---|
| Client minimum requis | Windows Vista [applications de bureau uniquement] |
| Serveur minimal pris en charge | Windows Server 2008 [applications de bureau uniquement] |
| Header | wlanapi.h |