Bagikan melalui


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
ERROR_FILE_NOT_FOUND
Sistem tidak dapat menemukan file yang ditentukan. Kesalahan ini dikembalikan jika tidak ada data kustom pengguna untuk profil yang ditentukan.
ERROR_INVALID_PARAMETER
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.
ERROR_FILE_NOT_FOUND
Sistem tidak dapat menemukan file yang ditentukan. Kesalahan ini dikembalikan jika tidak ada data pengguna kustom untuk profil yang ditentukan.
ERROR_INVALID_HANDLE
Handel hClientHandle tidak ditemukan dalam tabel handel.
ERROR_NOT_SUPPORTED
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.
RPC_STATUS
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.

Catatan Contoh ini akan gagal dimuat pada Windows Server 2008 dan Windows Server 2008 R2 jika Layanan LAN Nirkabel tidak diinstal dan dimulai.
 
#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

Lihat juga

WlanGetProfile

WlanGetProfileList

WlanSetProfile

WlanSetProfileCustomUserData