WlanGetProfileList-Funktion (wlanapi.h)
Die WlanGetProfileList-Funktion ruft die Liste der Profile in der bevorzugten Reihenfolge ab.
Syntax
DWORD WlanGetProfileList(
[in] HANDLE hClientHandle,
[in] const GUID *pInterfaceGuid,
[in] PVOID pReserved,
[out] PWLAN_PROFILE_INFO_LIST *ppProfileList
);
Parameter
[in] hClientHandle
Das Sitzungshandle des Clients, das durch einen vorherigen Aufruf der WlanOpenHandle-Funktion abgerufen wurde.
[in] pInterfaceGuid
Die GUID der drahtlosen Schnittstelle.
Eine Liste der GUIDs für drahtlose Schnittstellen auf dem lokalen Computer kann mit der Funktion WlanEnumInterfaces abgerufen werden.
[in] pReserved
Für die zukünftige Verwendung reserviert. Muss auf NULL festgelegt werden.
[out] ppProfileList
Eine PWLAN_PROFILE_INFO_LIST-Struktur , die die Liste der Profilinformationen enthält.
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 |
---|---|
|
Das Handle hClientHandle wurde in der Handletabelle nicht gefunden. |
|
Ein Parameter ist falsch. Dieser Fehler wird zurückgegeben, wenn eine der folgenden Bedingungen auftritt:
|
|
Es ist nicht genügend Arbeitsspeicher verfügbar, um diese Anforderung zu verarbeiten und Arbeitsspeicher für die Abfrageergebnisse zuzuweisen. |
|
Verschiedene Fehlercodes. |
Hinweise
Die WlanGetProfileList-Funktion gibt nur die grundlegenden Informationen zu den Drahtlosprofilen auf einer Drahtlosen Schnittstelle zurück. Die Liste der Drahtlosprofile auf einer Drahtlosen Schnittstelle wird in der Einstellungsreihenfolge abgerufen. WlanSetProfilePosition kann verwendet werden, um die Einstellungsreihenfolge für die Drahtlosprofile auf einer Drahtlosen Schnittstelle zu ändern.
Ausführlichere Informationen zu einem Drahtlosprofil auf einer Drahtlosen Schnittstelle können mithilfe der WlanGetProfile-Funktion abgerufen werden. Die WlanGetProfileCustomUserData-Funktion kann verwendet werden, um benutzerdefinierte Benutzerdaten für ein Drahtlosprofil auf einer drahtlosen Schnittstelle abzurufen. Eine Liste der Drahtlosen Schnittstellen und zugehörigen GUIDs auf dem lokalen Computer kann mithilfe der WlanEnumInterfaces-Funktion abgerufen werden.
Die WlanGetProfileList-Funktion ordnet Arbeitsspeicher für die Liste der Profile zu, die im Puffer zurückgegeben werden, auf den der ppProfileList-Parameter verweist. Der Aufrufer ist dafür verantwortlich, diesen Arbeitsspeicher mithilfe der WlanFreeMemory-Funktion freizugeben, wenn dieser Puffer nicht mehr benötigt wird.
Windows XP mit SP3 und Wlan-API für Windows XP mit SP2: Gastprofile, Profile mit WPS-Authentifizierung (Wireless Provisioning Service) und Profile mit Wi-Fi Protected Access-None-Authentifizierung (WPA-None) werden nicht unterstützt. Diese Typen von Profilen werden von WlanGetProfileList nicht zurückgegeben, auch wenn ein Profil dieses Typs in der Liste der bevorzugten Profile angezeigt wird.
Beispiele
Im folgenden Beispiel werden die WLAN-Schnittstellen auf dem lokalen Computer aufgelistet, die Liste der Profile für jede WLAN-Schnittstelle abgerufen und Werte aus der abgerufenen WLAN_PROFILE_INFO_LIST ausgegeben, die die WLAN_PROFILE_INFO Einträge enthält.
#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, j;
/* variables used for WlanEnumInterfaces */
PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
PWLAN_INTERFACE_INFO pIfInfo = NULL;
PWLAN_PROFILE_INFO_LIST pProfileList = NULL;
PWLAN_PROFILE_INFO pProfile = NULL;
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"WLAN_INTERFACE_INFO_LIST for this system\n");
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" Interface GUID[%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");
dwResult = WlanGetProfileList(hClient,
&pIfInfo->InterfaceGuid,
NULL,
&pProfileList);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WlanGetProfileList failed with error: %u\n",
dwResult);
dwRetVal = 1;
// You can use FormatMessage to find out why the function failed
} else {
wprintf(L"WLAN_PROFILE_INFO_LIST for this interface\n");
wprintf(L" Num Entries: %lu\n\n", pProfileList->dwNumberOfItems);
for (j = 0; j < pProfileList->dwNumberOfItems; j++) {
pProfile =
(WLAN_PROFILE_INFO *) & pProfileList->ProfileInfo[j];
wprintf(L" Profile Name[%u]: %ws\n", j, pProfile->strProfileName);
wprintf(L" Flags[%u]:\t 0x%x", j, pProfile->dwFlags);
if (pProfile->dwFlags & WLAN_PROFILE_GROUP_POLICY)
wprintf(L" Group Policy");
if (pProfile->dwFlags & WLAN_PROFILE_USER)
wprintf(L" Per User Profile");
wprintf(L"\n");
wprintf(L"\n");
}
}
}
}
if (pProfileList != NULL) {
WlanFreeMemory(pProfileList);
pProfileList = NULL;
}
if (pIfList != NULL) {
WlanFreeMemory(pIfList);
pIfList = NULL;
}
return dwRetVal;
}
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 (wlanapi.h einschließen) |
Bibliothek | Wlanapi.lib |
DLL | Wlanapi.dll |
Verteilbare Komponente | Wlan-API für Windows XP mit SP2 |