Fungsi WlanGetProfileList (wlanapi.h)
Fungsi WlanGetProfileList mengambil daftar profil dalam urutan preferensi.
Sintaks
DWORD WlanGetProfileList(
[in] HANDLE hClientHandle,
[in] const GUID *pInterfaceGuid,
[in] PVOID pReserved,
[out] PWLAN_PROFILE_INFO_LIST *ppProfileList
);
Parameter
[in] hClientHandle
Handel sesi klien, diperoleh dengan panggilan sebelumnya ke fungsi WlanOpenHandle .
[in] pInterfaceGuid
GUID antarmuka nirkabel.
Daftar GUID untuk antarmuka nirkabel pada komputer lokal dapat diambil menggunakan fungsi WlanEnumInterfaces .
[in] pReserved
Disiapkan untuk penggunaan masa mendatang. Harus diatur ke NULL.
[out] ppProfileList
Struktur PWLAN_PROFILE_INFO_LIST yang berisi daftar informasi profil.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan ERROR_SUCCESS.
Jika fungsi gagal, nilai yang dikembalikan mungkin salah satu kode pengembalian berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Handel hClientHandle tidak ditemukan dalam tabel handel. |
|
Parameter salah. Kesalahan ini dikembalikan jika salah satu kondisi berikut terjadi:
|
|
Memori tidak cukup tersedia untuk memproses permintaan ini dan mengalokasikan memori untuk hasil kueri. |
|
Berbagai kode kesalahan. |
Keterangan
Fungsi WlanGetProfileList hanya mengembalikan informasi dasar pada profil nirkabel pada antarmuka nirkabel. Daftar profil nirkabel pada antarmuka nirkabel diambil dalam urutan preferensi. WlanSetProfilePosition dapat digunakan untuk mengubah urutan preferensi profil nirkabel pada antarmuka nirkabel.
Informasi lebih rinci untuk profil nirkabel pada antarmuka nirkabel dapat diambil dengan menggunakan fungsi WlanGetProfile . Fungsi WlanGetProfileCustomUserData dapat digunakan untuk mengambil data pengguna kustom untuk profil nirkabel pada antarmuka nirkabel. Daftar antarmuka nirkabel dan GUID terkait di komputer lokal dapat diambil menggunakan fungsi WlanEnumInterfaces .
Fungsi WlanGetProfileList mengalokasikan memori untuk daftar profil yang dikembalikan dalam buffer yang diarahkan oleh parameter ppProfileList . Pemanggil bertanggung jawab untuk membebaskan memori ini menggunakan fungsi WlanFreeMemory ketika buffer ini tidak lagi diperlukan.
Windows XP dengan SP3 dan WIRELESS LAN API untuk Windows XP dengan SP2: Profil tamu, profil dengan autentikasi Wireless Provisioning Service (WPS), dan profil dengan autentikasi Wi-Fi Protected Access-None (WPA-None) tidak didukung. Jenis profil ini tidak dikembalikan oleh WlanGetProfileList, bahkan jika profil jenis ini muncul di daftar profil pilihan.
Contoh
Contoh berikut menghitung antarmuka LAN nirkabel di komputer lokal, mengambil daftar profil pada setiap antarmuka LAN nirkabel, dan mencetak nilai dari WLAN_PROFILE_INFO_LIST yang diambil yang berisi entri WLAN_PROFILE_INFO .
#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 wmain()
{
// 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, j;
/* variables used for WlanEnumInterfaces */
PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
PWLAN_INTERFACE_INFO pIfInfo = NULL;
PWLAN_PROFILE_INFO_LIST pProfileList = NULL;
PWLAN_PROFILE_INFO pProfile = NULL;
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" Interface GUID[%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 = WlanGetProfileList(hClient,
&pIfInfo->InterfaceGuid,
NULL,
&pProfileList);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WlanGetProfileList failed with error: %u\n",
dwResult);
dwRetVal = 1;
// You can use FormatMessage to find out why the function failed
} else {
wprintf(L"WLAN_PROFILE_INFO_LIST for this interface\n");
wprintf(L" Num Entries: %lu\n\n", pProfileList->dwNumberOfItems);
for (j = 0; j < pProfileList->dwNumberOfItems; j++) {
pProfile =
(WLAN_PROFILE_INFO *) & pProfileList->ProfileInfo[j];
wprintf(L" Profile Name[%u]: %ws\n", j, pProfile->strProfileName);
wprintf(L" Flags[%u]:\t 0x%x", j, pProfile->dwFlags);
if (pProfile->dwFlags & WLAN_PROFILE_GROUP_POLICY)
wprintf(L" Group Policy");
if (pProfile->dwFlags & WLAN_PROFILE_USER)
wprintf(L" Per User Profile");
wprintf(L"\n");
wprintf(L"\n");
}
}
}
}
if (pProfileList != NULL) {
WlanFreeMemory(pProfileList);
pProfileList = NULL;
}
if (pIfList != NULL) {
WlanFreeMemory(pIfList);
pIfList = NULL;
}
return dwRetVal;
}
Persyaratan
Klien minimum yang didukung | Windows Vista, Windows XP dengan SP3 [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 |
Redistribusi | API LAN Nirkabel untuk Windows XP dengan SP2 |