Funzione WlanEnumInterfaces (wlanapi.h)
La funzione WlanEnumInterfaces enumera tutte le interfacce LAN wireless attualmente abilitate nel computer locale.
Sintassi
DWORD WlanEnumInterfaces(
[in] HANDLE hClientHandle,
[in] PVOID pReserved,
[out] PWLAN_INTERFACE_INFO_LIST *ppInterfaceList
);
Parametri
[in] hClientHandle
Handle di sessione del client ottenuto da una chiamata precedente alla funzione WlanOpenHandle .
[in] pReserved
Riservato per utilizzi futuri. Questo parametro deve essere impostato su NULL.
[out] ppInterfaceList
Puntatore all'archiviazione per un puntatore per ricevere l'elenco restituito di interfacce LAN wireless in una struttura WLAN_INTERFACE_INFO_LIST .
Il buffer per il WLAN_INTERFACE_INFO_LIST restituito viene allocato dalla funzione WlanEnumInterfaces se la chiamata ha esito positivo.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è ERROR_SUCCESS.
Se la funzione ha esito negativo, il valore restituito può essere uno dei codici restituiti seguenti.
Codice restituito | Descrizione |
---|---|
|
Un parametro non è corretto. Questo errore viene restituito se il parametro hClientHandle o ppInterfaceList è NULL. Questo errore viene restituito se pReserved non è NULL. Questo errore viene restituito anche se il parametro hClientHandle non è valido. |
|
L'handle hClientHandle non è stato trovato nella tabella handle. |
|
Vari codici di errore. |
|
Memoria insufficiente per elaborare questa richiesta e allocare memoria per i risultati della query. |
Commenti
La funzione WlanEnumInterfaces alloca la memoria per l'elenco di interfacce restituite restituite restituite nel buffer a cui punta il parametro ppInterfaceList quando la funzione riesce. La memoria usata per il buffer a cui punta il parametro ppInterfaceList deve essere rilasciata chiamando la funzione WlanFreeMemory dopo che il buffer non è più necessario.
Esempio
L'esempio seguente enumera le interfacce LAN wireless nel computer locale e stampa i valori dalla struttura di WLAN_INTERFACE_INFO_LIST recuperata e dalle strutture di WLAN_INTERFACE_INFO enumerate.
#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;
}
Requisiti
Client minimo supportato | Windows Vista, Windows XP con SP3 [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | wlanapi.h (include Wlanapi.h) |
Libreria | Wlanapi.lib |
DLL | Wlanapi.dll |
Componente ridistribuibile | API LAN wireless per Windows XP con SP2 |