Fonction WlanEnumInterfaces (wlanapi.h)
La fonction WlanEnumInterfaces énumère toutes les interfaces LAN sans fil actuellement activées sur l’ordinateur local.
Syntaxe
DWORD WlanEnumInterfaces(
[in] HANDLE hClientHandle,
[in] PVOID pReserved,
[out] PWLAN_INTERFACE_INFO_LIST *ppInterfaceList
);
Paramètres
[in] hClientHandle
Handle de session du client, obtenu par un appel précédent à la fonction WlanOpenHandle .
[in] pReserved
Réservé pour un usage futur. Ce paramètre doit être défini sur NULL.
[out] ppInterfaceList
Pointeur vers le stockage pour qu’un pointeur reçoive la liste retournée d’interfaces LAN sans fil dans une structure de WLAN_INTERFACE_INFO_LIST .
La mémoire tampon pour la WLAN_INTERFACE_INFO_LIST retournée est allouée par la fonction WlanEnumInterfaces si l’appel réussit.
Valeur retournée
Si la fonction réussit, la valeur de retour est ERROR_SUCCESS.
Si la fonction échoue, la valeur de retour peut être l’un des codes de retour suivants.
Code de retour | Description |
---|---|
|
Un paramètre est incorrect. Cette erreur est retournée si le paramètre hClientHandle ou ppInterfaceList a la valeur NULL. Cette erreur est retournée si pReserved n’a pas la valeur NULL. Cette erreur est également retournée si le paramètre hClientHandle n’est pas valide. |
|
Le handle hClientHandle est introuvable dans la table de handles. |
|
Différents codes d’erreur. |
|
La mémoire disponible est insuffisante pour traiter cette requête et allouer de la mémoire aux résultats de la requête. |
Remarques
La fonction WlanEnumInterfaces alloue de la mémoire à la liste des interfaces retournées qui est retournée dans la mémoire tampon pointée par le paramètre ppInterfaceList lorsque la fonction réussit. La mémoire utilisée pour la mémoire tampon pointée vers par le paramètre ppInterfaceList doit être libérée en appelant la fonction WlanFreeMemory une fois que la mémoire tampon n’est plus nécessaire.
Exemples
L’exemple suivant énumère les interfaces LAN sans fil sur l’ordinateur local et imprime les valeurs de la structure WLAN_INTERFACE_INFO_LIST récupérée et des structures WLAN_INTERFACE_INFO énumérées.
#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;
int iRet = 0;
WCHAR GuidString[40] = {0};
int i;
/* variables used for WlanEnumInterfaces */
PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
PWLAN_INTERFACE_INFO pIfInfo = NULL;
dwResult = WlanOpenHandle(dwMaxClient, NULL, &dwCurVersion, &hClient);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WlanOpenHandle failed with error: %u\n", dwResult);
// FormatMessage can be used to find out why the function failed
return 1;
}
dwResult = WlanEnumInterfaces(hClient, NULL, &pIfList);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WlanEnumInterfaces failed with error: %u\n", dwResult);
// FormatMessage can be used to find out why the function failed
return 1;
}
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[%d]:\t %lu\n", i, i);
iRet = StringFromGUID2(pIfInfo->InterfaceGuid, (LPOLESTR) &GuidString, 39);
// For c rather than C++ source code, the above line needs to be
// iRet = StringFromGUID2(&pIfInfo->InterfaceGuid, (LPOLESTR) &GuidString, 39);
if (iRet == 0)
wprintf(L"StringFromGUID2 failed\n");
else {
wprintf(L" InterfaceGUID[%d]: %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");
}
}
if (pIfList != NULL) {
WlanFreeMemory(pIfList);
pIfList = NULL;
}
return 0;
}
Spécifications
Client minimal pris en charge | Windows Vista, Windows XP avec SP3 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | wlanapi.h (incluez Wlanapi.h) |
Bibliothèque | Wlanapi.lib |
DLL | Wlanapi.dll |
Composant redistribuable | API LAN sans fil pour Windows XP avec SP2 |