WlanGetProfileCustomUserData 関数 (wlanapi.h)
WlanGetProfileCustomUserData 関数は、ワイヤレス プロファイルに関連付けられているカスタム ユーザー データを取得します。
構文
DWORD WlanGetProfileCustomUserData(
[in] HANDLE hClientHandle,
[in] const GUID *pInterfaceGuid,
[in] LPCWSTR strProfileName,
PVOID pReserved,
[out] DWORD *pdwDataSize,
[out] PBYTE *ppData
);
パラメーター
[in] hClientHandle
WlanOpenHandle 関数の以前の呼び出しによって取得されたクライアントのセッション ハンドル。
[in] pInterfaceGuid
ワイヤレス LAN インターフェイスの GUID へのポインター。
[in] strProfileName
カスタム ユーザー データが関連付けられているプロファイルの名前。 プロファイル名では大文字と小文字が区別されます。 この文字列は NULL で終わる必要があります。
pReserved
将来利用するために予約されています。 NULL に設定する必要があります。
[out] pdwDataSize
ppData パラメーターが指すユーザー データ バッファーのサイズ (バイト単位)。
[out] ppData
ユーザー データへのポインターです。
戻り値
関数が成功した場合、戻り値は ERROR_SUCCESS です。
関数が失敗した場合、戻り値は次のいずれかのリターン コードになります。
リターン コード | 説明 |
---|---|
|
指定されたファイルが見つかりません。 このエラーは、指定されたプロファイルにユーザー カスタム データが存在しない場合に返されます。 |
|
hClientHandle パラメーターが NULL であるか無効か、pInterfaceGuid パラメーターが NULL、strProfileName パラメーターが NULL、pReserved パラメーターが NULL ではない、pdwDataSize パラメーターが 0、ppData パラメーターが NULL です。 |
|
指定されたファイルが見つかりません。 このエラーは、指定されたプロファイルにカスタム ユーザー データが存在しない場合に返されます。 |
|
ハンドル テーブルにハンドル hClientHandle が見つかりませんでした。 |
|
この関数は、サポートされていないプラットフォームから呼び出されました。 この値は、SP3 の Windows XP または SP2 クライアントを使用した Windows XP 用ワイヤレス LAN API からこの関数が呼び出された場合に返されます。 |
|
さまざまなエラー コード。 |
注釈
Native Wifi AutoConfig サービスで使用されるすべてのワイヤレス WLAN プロファイルについて、Windows ではカスタム ユーザー データの概念が維持されます。 このカスタム ユーザー データは、最初は存在しないが、 WlanSetProfileCustomUserData 関数を呼び出すことによって設定できます。 カスタム ユーザー データは 、WlanSetProfile 関数を呼び出すことによってプロファイルが変更されるたびに空にリセットされます。
カスタム ユーザー データが設定されたら、 WlanGetProfileCustomUserData 関数を使用してこのデータにアクセスできます。
呼び出し元は、WlanFreeMemory 関数を使用して、ppData パラメーターによって指されるバッファーに割り当てられたメモリを解放する役割を担います。
例
次の例では、ローカル コンピューター上のワイヤレス LAN インターフェイスを列挙し、各ワイヤレス LAN インターフェイス上の特定のワイヤレス プロファイルのカスタム ユーザー データ情報を取得しようとします。 ユーザー カスタム データのサイズが出力されます。
#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;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wlanapi.h (Wlanapi.h を含む) |
Library | Wlanapi.lib |
[DLL] | Wlanapi.dll |