Partager via


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
ERROR_FILE_NOT_FOUND
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é.
ERROR_INVALID_PARAMETER
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.
ERROR_FILE_NOT_FOUND
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é.
ERROR_INVALID_HANDLE
Le handle hClientHandle est introuvable dans la table handle.
ERROR_NOT_SUPPORTED
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.
RPC_STATUS
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.

Note Cet exemple ne parvient pas à se charger sur Windows Server 2008 et Windows Server 2008 R2 si le service LAN sans fil n’est pas installé et démarré.
 
#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

Voir aussi

WlanGetProfile

WlanGetProfileList

WlanSetProfile

WlanSetProfileCustomUserData