wlanapi.h (wlanDeleteProfile 函数)
WlanDeleteProfile 函数删除本地计算机上无线接口的无线配置文件。
语法
DWORD WlanDeleteProfile(
[in] HANDLE hClientHandle,
[in] const GUID *pInterfaceGuid,
[in] LPCWSTR strProfileName,
PVOID pReserved
);
参数
[in] hClientHandle
客户端的会话句柄,由先前对 WlanOpenHandle 函数的调用获取。
[in] pInterfaceGuid
要从中删除配置文件的接口的 GUID。
[in] strProfileName
要删除的配置文件的名称。 配置文件名称区分大小写。 此字符串必须以 NULL 结尾。
带 SP3 的 Windows XP 和适用于 SP2 的 Windows XP 无线 LAN API: 提供的名称必须与从网络的 SSID 自动派生的配置文件名称匹配。 对于基础结构网络配置文件,必须为配置文件名称提供 SSID。 对于即席网络配置文件,提供的名称必须是即席网络的 SSID, -adhoc
后跟 。
pReserved
保留供将来使用。 必须设置为 NULL。
返回值
如果函数成功,则返回值为 ERROR_SUCCESS。
如果函数失败,则返回值可能是以下返回代码之一。
返回代码 | 说明 |
---|---|
|
hClientHandle 参数为 NULL 或无效,pInterfaceGuid 参数为 NULL,strProfileName 参数为 NULL,或 pReserved 不为 NULL。 |
|
在句柄表中找不到 hClientHandle 参数中指定的句柄。 |
|
在配置文件存储中找不到 strProfileName 指定的无线配置文件。 |
|
调用方没有足够的权限删除配置文件。 |
|
各种错误代码。 |
注解
WlanDeleteProfile 函数删除本地计算机上无线接口的无线配置文件。
执行配置文件操作时,所有无线 LAN 函数都需要无线接口的接口 GUID。 删除无线接口时,其状态将从无线 LAN 服务 (WLANSVC) 清除,并且无法执行配置文件操作。
如果无线 LAN 配置文件的pInterfaceGuid 参数中指定的无线接口已从系统中删除, (已删除的 USB 无线适配器(例如) ),WlanDeleteProfile 函数可能会失败并ERROR_INVALID_PARAMETER。
若要在命令行中删除配置文件,请使用 netsh wlan delete profile 命令。 有关详细信息,请参阅 适用于无线局域网的 Netsh 命令 (wlan) 。
示例
以下示例枚举本地计算机上的无线 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;
// Validate the parameters
if (argc < 2) {
wprintf(L"usage: %s <profile>\n", argv[0]);
wprintf(L" Deletes a wireless profile\n");
wprintf(L" Example\n");
wprintf(L" %s \"Default Wireless\"\n", argv[0]);
exit(1);
}
pProfileName = argv[1];
wprintf(L"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 < 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 = WlanDeleteProfile(hClient,
&pIfInfo->InterfaceGuid,
pProfileName, NULL);
if (dwResult != ERROR_SUCCESS) {
wprintf
(L"WlanDeleteProfile failed on this interface with error: %u\n",
dwResult);
if (dwResult == ERROR_NOT_FOUND)
wprintf
(L" Error was the following profile was not found: %ws\n",
pProfileName);
// You can use FormatMessage to find out why the function failed
} else {
wprintf(L"Successfully deleted Profile Name: %ws\n",
pProfileName);
}
wprintf(L"\n");
}
}
if (pIfList != NULL) {
WlanFreeMemory(pIfList);
pIfList = NULL;
}
return dwRetVal;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista、Windows XP SP3 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | wlanapi.h (包括 Wlanapi.h) |
Library | Wlanapi.lib |
DLL | Wlanapi.dll |
可再发行组件 | 带有 SP2 的 Windows XP 无线 LAN API |