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
ERROR_INVALID_PARAMETER
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.
ERROR_INVALID_HANDLE
Das Handle hClientHandle wurde in der Handle-Tabelle nicht gefunden.
RPC_STATUS
Verschiedene Fehlercodes.
ERROR_NOT_ENOUGH_MEMORY
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.

Hinweis Dieses Beispiel kann nicht unter Windows Server 2008 und Windows Server 2008 R2 geladen werden, wenn der WLAN-Dienst nicht installiert und gestartet ist.
 
#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

Weitere Informationen

WLAN_INTERFACE_INFO

WLAN_INTERFACE_INFO_LIST

WlanFreeMemory