WlanGetProfileCustomUserData-Funktion (wlanapi.h)

Die WlanGetProfileCustomUserData-Funktion ruft die benutzerdefinierten Benutzerdaten ab, die einem Drahtlosprofil zugeordnet sind.

Syntax

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

Parameter

[in] hClientHandle

Das Sitzungshandle des Clients, das durch einen vorherigen Aufruf der WlanOpenHandle-Funktion abgerufen wurde.

[in] pInterfaceGuid

Ein Zeiger auf die GUID der WLAN-Schnittstelle.

[in] strProfileName

Der Name des Profils, dem die benutzerdefinierten Benutzerdaten zugeordnet sind. Bei Profilnamen wird die Groß-/Kleinschreibung beachtet. Diese Zeichenfolge muss NULL-endend sein.

pReserved

Für die zukünftige Verwendung reserviert. Muss auf NULL festgelegt werden.

[out] pdwDataSize

Die Größe des Benutzerdatenpuffers in Byte, auf den der ppData-Parameter verweist.

[out] ppData

Ein Zeiger auf die Benutzerdaten.

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
ERROR_FILE_NOT_FOUND
Die angegebene Datei wurde nicht gefunden. Dieser Fehler wird zurückgegeben, wenn für das angegebene Profil keine benutzerdefinierten Benutzerdaten vorhanden sind.
ERROR_INVALID_PARAMETER
Der hClientHandle-Parameter ist NULL oder ungültig, der pInterfaceGuid-Parameter ist NULL, der strProfileName-Parameter ist NULL, der pReserved-Parameter ist nicht NULL, der pdwDataSize-Parameter ist 0 oder der ppData-Parameter ist NULL.
ERROR_FILE_NOT_FOUND
Die angegebene Datei wurde nicht gefunden. Dieser Fehler wird zurückgegeben, wenn für das angegebene Profil keine benutzerdefinierten Benutzerdaten vorhanden sind.
ERROR_INVALID_HANDLE
Das Handle hClientHandle wurde in der Handletabelle nicht gefunden.
ERROR_NOT_SUPPORTED
Diese Funktion wurde von einer nicht unterstützten Plattform aufgerufen. Dieser Wert wird zurückgegeben, wenn diese Funktion von einem Windows XP mit SP3 oder einer WLAN-API für Windows XP mit SP2-Client aufgerufen wurde.
RPC_STATUS
Verschiedene Fehlercodes.

Hinweise

Für jedes wlan-Profil, das vom Native Wifi AutoConfig-Dienst verwendet wird, behält Windows das Konzept der benutzerdefinierten Benutzerdaten bei. Diese benutzerdefinierten Benutzerdaten sind zunächst nicht vorhanden, können jedoch durch Aufrufen der Funktion WlanSetProfileCustomUserData festgelegt werden. Die benutzerdefinierten Benutzerdaten werden bei jeder Änderung des Profils auf leer zurückgesetzt, indem die WlanSetProfile-Funktion aufgerufen wird.

Nachdem benutzerdefinierte Benutzerdaten festgelegt wurden, kann mithilfe der Funktion WlanGetProfileCustomUserData auf diese Daten zugegriffen werden.

Der Aufrufer ist dafür verantwortlich, den Speicher freizugeben, der für den Puffer zugeordnet ist, auf den der ppData-Parameter verweist, mithilfe der WlanFreeMemory-Funktion .

Beispiele

Im folgenden Beispiel werden die WLAN-Schnittstellen auf dem lokalen Computer aufgelistet und dann versucht, benutzerdefinierte Benutzerdateninformationen für ein bestimmtes Drahtlosprofil auf jeder WLAN-Schnittstelle abzurufen. Die Größe der benutzerdefinierten Benutzerdaten wird gedruckt.

Hinweis Dieses Beispiel kann nicht unter Windows Server 2008 und Windows Server 2008 R2 geladen werden, wenn der WLAN-Dienst nicht installiert und gestartet wird.
 
#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;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [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

Weitere Informationen

WlanGetProfile

WlanGetProfileList

WlanSetProfile

WlanSetProfileCustomUserData