Fonction WlanGetProfileList (wlanapi.h)
La fonction WlanGetProfileList récupère la liste des profils dans l’ordre de préférence.
Syntaxe
DWORD WlanGetProfileList(
[in] HANDLE hClientHandle,
[in] const GUID *pInterfaceGuid,
[in] PVOID pReserved,
[out] PWLAN_PROFILE_INFO_LIST *ppProfileList
);
Paramètres
[in] hClientHandle
Le handle de session du client, obtenu par un appel précédent à la fonction WlanOpenHandle .
[in] pInterfaceGuid
GUID de l’interface sans fil.
Une liste des GUID pour les interfaces sans fil sur l’ordinateur local peut être récupérée à l’aide de la fonction WlanEnumInterfaces .
[in] pReserved
Réservé pour un usage futur. Doit être défini sur NULL.
[out] ppProfileList
Une structure PWLAN_PROFILE_INFO_LIST qui contient la liste des informations de profil.
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 |
---|---|
|
Le handle hClientHandle est introuvable dans la table handle. |
|
Un paramètre est incorrect. Cette erreur est retournée si l’une des conditions suivantes se produit :
|
|
La mémoire disponible est insuffisante pour traiter cette demande et allouer de la mémoire pour les résultats de la requête. |
|
Différents codes d’erreur. |
Remarques
La fonction WlanGetProfileList retourne uniquement les informations de base sur les profils sans fil d’une interface sans fil. La liste des profils sans fil sur une interface sans fil est récupérée dans l’ordre de préférence. WlanSetProfilePosition peut être utilisé pour modifier l’ordre de préférence pour les profils sans fil sur une interface sans fil.
Vous pouvez obtenir des informations plus détaillées sur un profil sans fil sur une interface sans fil à l’aide de la fonction WlanGetProfile . La fonction WlanGetProfileCustomUserData peut être utilisée pour récupérer des données utilisateur personnalisées pour un profil sans fil sur une interface sans fil. Une liste des interfaces sans fil et des GUID associés sur l’ordinateur local peut être récupérée à l’aide de la fonction WlanEnumInterfaces .
La fonction WlanGetProfileList alloue de la mémoire pour la liste des profils retournés dans la mémoire tampon pointée par le paramètre ppProfileList . L’appelant est responsable de libérer cette mémoire à l’aide de la fonction WlanFreeMemory lorsque cette mémoire tampon n’est plus nécessaire.
Windows XP avec SP3 et API LAN sans fil pour Windows XP avec SP2 : Les profils invités, les profils avec l’authentification WPS (Wireless Provisioning Service) et les profils avec Wi-Fi'authentification Access-None protégée (WPA-None) ne sont pas pris en charge. Ces types de profils ne sont pas retournés par WlanGetProfileList, même si un profil de ce type apparaît dans la liste des profils préférés.
Exemples
L’exemple suivant énumère les interfaces LAN sans fil sur l’ordinateur local, récupère la liste des profils de chaque interface LAN sans fil et imprime les valeurs de la WLAN_PROFILE_INFO_LIST récupérée qui contient les entrées WLAN_PROFILE_INFO .
#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;
}
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 (inclure Wlanapi.h) |
Bibliothèque | Wlanapi.lib |
DLL | Wlanapi.dll |
Composant redistribuable | API LAN sans fil pour Windows XP avec SP2 |