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 |
---|---|
|
Die angegebene Datei wurde nicht gefunden. Dieser Fehler wird zurückgegeben, wenn für das angegebene Profil keine benutzerdefinierten Benutzerdaten vorhanden sind. |
|
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. |
|
Die angegebene Datei wurde nicht gefunden. Dieser Fehler wird zurückgegeben, wenn für das angegebene Profil keine benutzerdefinierten Benutzerdaten vorhanden sind. |
|
Das Handle hClientHandle wurde in der Handletabelle nicht gefunden. |
|
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. |
|
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.
#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 |