WlanEnumInterfaces-Funktion (wlanapi.h)
Die WlanEnumInterfaces-Funktion listet alle derzeit auf dem lokalen Computer aktivierten WLAN-Schnittstellen auf.
Syntax
DWORD WlanEnumInterfaces(
[in] HANDLE hClientHandle,
[in] PVOID pReserved,
[out] PWLAN_INTERFACE_INFO_LIST *ppInterfaceList
);
Parameter
[in] hClientHandle
Das Sitzungshandle des Clients, das durch einen vorherigen Aufruf der WlanOpenHandle-Funktion abgerufen wurde.
[in] pReserved
Für die zukünftige Verwendung reserviert. Dieser Parameter muss auf NULL festgelegt werden.
[out] ppInterfaceList
Ein Zeiger auf den Speicher für einen Zeiger, um die zurückgegebene Liste der DRAHTLOS-Schnittstellen in einer WLAN_INTERFACE_INFO_LIST-Struktur zu empfangen.
Der Puffer für die zurückgegebene WLAN_INTERFACE_INFO_LIST wird von der WlanEnumInterfaces-Funktion zugewiesen, wenn der Aufruf erfolgreich ist.
Rückgabewert
Wenn die Funktion erfolgreich ist, wird der Rückgabewert ERROR_SUCCESS.
Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden Rückgabecodes sein.
Rückgabecode | Beschreibung |
---|---|
|
Ein Parameter ist falsch. Dieser Fehler wird zurückgegeben, wenn der Parameter hClientHandle oder ppInterfaceListNULL ist. Dieser Fehler wird zurückgegeben, wenn pReserved nicht NULL ist. Dieser Fehler wird auch zurückgegeben, wenn der hClientHandle-Parameter ungültig ist. |
|
Das Handle hClientHandle wurde in der Handle-Tabelle nicht gefunden. |
|
Verschiedene Fehlercodes. |
|
Für die Verarbeitung dieser Anforderung und die Zuweisung von Arbeitsspeicher für die Abfrageergebnisse steht nicht genügend Arbeitsspeicher zur Verfügung. |
Hinweise
Die WlanEnumInterfaces-Funktion weist Arbeitsspeicher für die Liste der zurückgegebenen Schnittstellen zu, die im Puffer zurückgegeben wird, auf den der ppInterfaceList-Parameter verweist, wenn die Funktion erfolgreich ist. Der Arbeitsspeicher, der für den Puffer verwendet wird, auf den der parameter ppInterfaceList verweist, sollte durch Aufrufen der WlanFreeMemory-Funktion freigegeben werden, nachdem der Puffer nicht mehr benötigt wird.
Beispiele
Im folgenden Beispiel werden die WLAN-Schnittstellen auf dem lokalen Computer aufgelistet und Werte aus der abgerufenen WLAN_INTERFACE_INFO_LIST Struktur und den aufgezählten WLAN_INTERFACE_INFO-Strukturen ausgegeben.
#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;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista, Windows XP mit SP3 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | wlanapi.h (einschließlich Wlanapi.h) |
Bibliothek | Wlanapi.lib |
DLL | Wlanapi.dll |
Verteilbare Komponente | Wlan-API für Windows XP mit SP2 |