Fungsi WlanGetProfileCustomUserData (wlanapi.h)
Fungsi WlanGetProfileCustomUserData mendapatkan data pengguna kustom yang terkait dengan profil nirkabel.
Sintaks
DWORD WlanGetProfileCustomUserData(
[in] HANDLE hClientHandle,
[in] const GUID *pInterfaceGuid,
[in] LPCWSTR strProfileName,
PVOID pReserved,
[out] DWORD *pdwDataSize,
[out] PBYTE *ppData
);
Parameter
[in] hClientHandle
Handel sesi klien, diperoleh dari panggilan sebelumnya ke fungsi WlanOpenHandle .
[in] pInterfaceGuid
Penunjuk ke GUID antarmuka LAN nirkabel.
[in] strProfileName
Nama profil tempat data pengguna kustom dikaitkan. Nama profil peka huruf besar/kecil. String ini harus dihentikan NULL.
pReserved
Disiapkan untuk penggunaan masa mendatang. Harus diatur ke NULL.
[out] pdwDataSize
Ukuran, dalam byte, dari buffer data pengguna yang diacu oleh parameter ppData .
[out] ppData
Penunjuk ke data pengguna.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan adalah ERROR_SUCCESS.
Jika fungsi gagal, nilai yang dikembalikan mungkin merupakan salah satu kode pengembalian berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Sistem tidak dapat menemukan file yang ditentukan. Kesalahan ini dikembalikan jika tidak ada data kustom pengguna untuk profil yang ditentukan. |
|
Parameter hClientHandle adalah NULL atau tidak valid, parameter pInterfaceGuid adalah NULL, parameter strProfileName adalah NULL, parameter pReserved bukan NULL, parameter pdwDataSize adalah 0, atau parameter ppData adalah NULL. |
|
Sistem tidak dapat menemukan file yang ditentukan. Kesalahan ini dikembalikan jika tidak ada data pengguna kustom untuk profil yang ditentukan. |
|
Handel hClientHandle tidak ditemukan dalam tabel handel. |
|
Fungsi ini dipanggil dari platform yang tidak didukung. Nilai ini akan dikembalikan jika fungsi ini dipanggil dari Windows XP dengan SP3 atau Wireless LAN API untuk Windows XP dengan klien SP2. |
|
Berbagai kode kesalahan. |
Keterangan
Untuk setiap profil WLAN nirkabel yang digunakan oleh layanan AutoConfig Wifi Asli, Windows mempertahankan konsep data pengguna kustom. Data pengguna kustom ini awalnya tidak ada, tetapi dapat diatur dengan memanggil fungsi WlanSetProfileCustomUserData . Data pengguna kustom akan direset ke kosong setiap kali profil dimodifikasi dengan memanggil fungsi WlanSetProfile .
Setelah data pengguna kustom diatur, data ini dapat diakses menggunakan fungsi WlanGetProfileCustomUserData .
Pemanggil bertanggung jawab untuk membebaskan memori yang dialokasikan untuk buffer yang ditujukkan oleh parameter ppData menggunakan fungsi WlanFreeMemory .
Contoh
Contoh berikut menghitung antarmuka LAN nirkabel di komputer lokal, lalu mencoba mengambil informasi data pengguna kustom untuk profil nirkabel tertentu pada setiap antarmuka LAN nirkabel. Ukuran data kustom pengguna dicetak.
#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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | wlanapi.h (termasuk Wlanapi.h) |
Pustaka | Wlanapi.lib |
DLL | Wlanapi.dll |