Fonction WlanGetProfileCustomUserData (wlanapi.h)
La fonction WlanGetProfileCustomUserData obtient les données utilisateur personnalisées associées à un profil sans fil.
Syntaxe
DWORD WlanGetProfileCustomUserData(
[in] HANDLE hClientHandle,
[in] const GUID *pInterfaceGuid,
[in] LPCWSTR strProfileName,
PVOID pReserved,
[out] DWORD *pdwDataSize,
[out] PBYTE *ppData
);
Paramètres
[in] hClientHandle
Le handle de session du client, obtenu par un appel précédent à la fonction WlanOpenHandle .
[in] pInterfaceGuid
Pointeur vers le GUID de l’interface LAN sans fil.
[in] strProfileName
Nom du profil auquel les données utilisateur personnalisées sont associées. Les noms de profil respectent la casse. Cette chaîne doit être terminée par null.
pReserved
Réservé pour un usage futur. Doit être défini sur NULL.
[out] pdwDataSize
Taille, en octets, de la mémoire tampon de données utilisateur pointée vers le paramètre ppData .
[out] ppData
Pointeur vers les données utilisateur.
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 système ne peut pas trouver le fichier spécifié. Cette erreur est retournée si aucune donnée personnalisée utilisateur n’existe pour le profil spécifié. |
|
Le paramètre hClientHandle a la valeur NULL ou n’est pas valide, le paramètre pInterfaceGuid a la valeur NULL, le paramètre strProfileName a la valeur NULL, le paramètre pReserved n’est pas NULL, le paramètre pdwDataSize est 0 ou le paramètre ppData est NULL. |
|
Le système ne peut pas trouver le fichier spécifié. Cette erreur est retournée si aucune donnée utilisateur personnalisée n’existe pour le profil spécifié. |
|
Le handle hClientHandle est introuvable dans la table handle. |
|
Cette fonction a été appelée à partir d’une plateforme non prise en charge. Cette valeur sera retournée si cette fonction a été appelée à partir d’un windows XP avec l’API LAN sans fil ou SP3 pour Windows XP avec le client SP2. |
|
Différents codes d’erreur. |
Remarques
Pour chaque profil WLAN sans fil utilisé par le service Native Wifi AutoConfig, Windows conserve le concept de données utilisateur personnalisées. Ces données utilisateur personnalisées sont initialement inexistantes, mais peuvent être définies en appelant la fonction WlanSetProfileCustomUserData . Les données utilisateur personnalisées sont réinitialisées pour qu’elles se vident chaque fois que le profil est modifié en appelant la fonction WlanSetProfile .
Une fois les données utilisateur personnalisées définies, ces données sont accessibles à l’aide de la fonction WlanGetProfileCustomUserData .
L’appelant est responsable de libérer la mémoire allouée pour la mémoire tampon vers laquelle pointe le paramètre ppData à l’aide de la fonction WlanFreeMemory .
Exemples
L’exemple suivant énumère les interfaces LAN sans fil sur l’ordinateur local, puis tente de récupérer les informations de données utilisateur personnalisées pour un profil sans fil spécifique sur chaque interface LAN sans fil. La taille des données personnalisées de l’utilisateur est imprimée.
#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 _cdecl wmain(int argc, WCHAR **argv)
{
// 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;
/* variables used for WlanEnumInterfaces */
PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
PWLAN_INTERFACE_INFO pIfInfo = NULL;
LPCWSTR pProfileName = NULL;
PBYTE pProfileData = NULL;
DWORD dwDataSize = 0;
// Validate the parameters
if (argc < 2) {
wprintf(L"usage: %s <profile>\n", argv[0]);
wprintf(L" Gets a wireless profile\n");
wprintf(L" Example\n");
wprintf(L" %s \"Default Wireless\"\n", argv[0]);
exit(1);
}
pProfileName = argv[1];
wprintf(L"Custom user data information for profile: %ws\n\n", pProfileName);
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" 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");
dwResult = WlanGetProfileCustomUserData(hClient,
&pIfInfo->InterfaceGuid,
pProfileName,
NULL,
&dwDataSize,
&pProfileData);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WlanGetProfileCustomData failed with error: %u\n",
dwResult);
// You can use FormatMessage to find out why the function failed
} else {
wprintf(L"Profile Name: %ws\n", pProfileName);
wprintf(L" dwDataSize:\t 0x%x\n", dwDataSize);
wprintf(L" Profile Custom Data:\n");
// wprintf(L"%ws\n\n", pProfileXml);
wprintf(L"\n");
wprintf(L"\n");
}
}
}
if (pProfileData != NULL) {
WlanFreeMemory(pProfileData);
pProfileData = NULL;
}
if (pIfList != NULL) {
WlanFreeMemory(pIfList);
pIfList = NULL;
}
return dwRetVal;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista [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 |