Condividi tramite


Funzione WlanGetProfileCustomUserData (wlanapi.h)

La funzione WlanGetProfileCustomUserData ottiene i dati utente personalizzati associati a un profilo wireless.

Sintassi

DWORD WlanGetProfileCustomUserData(
  [in]  HANDLE     hClientHandle,
  [in]  const GUID *pInterfaceGuid,
  [in]  LPCWSTR    strProfileName,
        PVOID      pReserved,
  [out] DWORD      *pdwDataSize,
  [out] PBYTE      *ppData
);

Parametri

[in] hClientHandle

Handle di sessione del client ottenuto da una chiamata precedente alla funzione WlanOpenHandle .

[in] pInterfaceGuid

Puntatore al GUID dell'interfaccia LAN wireless.

[in] strProfileName

Nome del profilo con cui sono associati i dati utente personalizzati. I nomi dei profili sono distinzione tra maiuscole e minuscole. Questa stringa deve essere terminata con null.

pReserved

Riservato per utilizzi futuri. Deve essere impostato su NULL.

[out] pdwDataSize

Dimensioni, in byte, del buffer dei dati utente a cui fa riferimento il parametro ppData .

[out] ppData

Puntatore ai dati utente.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è ERROR_SUCCESS.

Se la funzione ha esito negativo, il valore restituito può essere uno dei codici restituiti seguenti.

Codice restituito Descrizione
ERROR_FILE_NOT_FOUND
Non è possibile trovare il file specificato. Questo errore viene restituito se non esistono dati personalizzati utente per il profilo specificato.
ERROR_INVALID_PARAMETER
Il parametro hClientHandle è NULLo non valido, il parametro pInterfaceGuidè NULL, il parametro strProfileName è NULL, il parametro pReserved non è NULL, il parametro pdwDataSize è 0 o il parametro ppData è NULL.
ERROR_FILE_NOT_FOUND
Non è possibile trovare il file specificato. Questo errore viene restituito se non esistono dati utente personalizzati per il profilo specificato.
ERROR_INVALID_HANDLE
L'handle hClientHandle non è stato trovato nella tabella handle.
ERROR_NOT_SUPPORTED
Questa funzione è stata chiamata da una piattaforma non supportata. Questo valore verrà restituito se questa funzione è stata chiamata da un'API Windows XP con SP3 o WIRELESS LAN per Windows XP con il client SP2.
RPC_STATUS
Vari codici di errore.

Commenti

Per ogni profilo WLAN wireless usato dal servizio Native Wifi AutoConfig, Windows mantiene il concetto di dati utente personalizzati. Questi dati utente personalizzati non sono inizialmente esistenti, ma possono essere impostati chiamando la funzione WlanSetProfileCustomUserData . I dati utente personalizzati vengono reimpostati in qualsiasi momento in cui il profilo viene modificato chiamando la funzione WlanSetProfile .

Dopo aver impostato i dati utente personalizzati, questi dati possono essere accessibili usando la funzione WlanGetProfileCustomUserData .

Il chiamante è responsabile della liberazione della memoria allocata per il buffer a cui punta il parametro ppData usando la funzione WlanFreeMemory .

Esempio

L'esempio seguente enumera le interfacce LAN wireless nel computer locale e quindi tenta di recuperare le informazioni sui dati utente personalizzati per un profilo wireless specifico in ogni interfaccia LAN wireless. Le dimensioni dei dati personalizzati dell'utente sono stampate.

Nota Questo esempio non riuscirà a caricare in Windows Server 2008 e Windows Server 2008 R2 se il servizio LAN wireless non è installato e avviato.
 
#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;
}

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wlanapi.h (include Wlanapi.h)
Libreria Wlanapi.lib
DLL Wlanapi.dll

Vedi anche

WlanGetProfile

WlanGetProfileList

WlanSetProfile

WlanSetProfileCustomUserData