WZCEnumInterfaces 函数
[从 Windows Vista 和 Windows Server 2008 开始不再支持 WZCEnumInterfaces 。 请改用 WlanEnumInterfaces 函数。 有关详细信息,请参阅 关于本机 Wifi API。]
WZCEnumInterfaces 函数枚举由无线零配置服务管理的所有无线 LAN 接口。
语法
DWORD WZCEnumInterfaces(
_In_ LPWSTR pSrvAddr,
_Out_ PINTFS_KEY_TABLE pIntfs
);
parameters
-
pSrvAddr [in]
-
指向字符串的指针,该字符串包含要执行此函数的计算机的名称。 如果此参数为 NULL,则在本地计算机上枚举无线零配置服务。
如果指定的 pSrvAddr 参数是远程计算机,则远程计算机必须支持远程 RPC 调用。
-
pIntfs [out]
-
指向 INTFS_KEY_TABLE 结构的指针,该结构包含所有接口的键信息表。
返回值
如果函数成功,则返回值为 ERROR_SUCCESS。
如果函数失败,则返回值可能是以下返回代码之一。
返回代码 | 说明 |
---|---|
|
存储控制块已销毁。 如果无线零配置服务尚未初始化内部对象,则返回此错误。 |
|
接口未知。 如果未启动无线零配置服务,则返回此错误。 |
|
空引用指针已传递到存根。 如果 pIntfs 参数为 NULL,则返回此错误。 |
|
没有足够的内存可用于处理此请求并为查询结果分配内存。 |
|
各种错误代码。 |
备注
在调用 WZCEnumInterfaces 函数之前,pIntf 指向的 INTFS_KEY_TABLE 结构的 dwNumIntfs 成员必须设置为 0。 此外, pIntfs 成员必须设置为 NULL。
对于对其他无线零配置函数的后续调用,应用程序必须通过提供 WZCEnumInterfaces 函数返回的相关密钥信息来标识其运行的接口。
如果 WZCEnumInterfaces 返回ERROR_SUCCESS,则调用方应调用 LocalFree ,以便在不再需要此信息后释放为返回的数据分配的内部缓冲区。
注意
Wzcsapi.h 头文件和 Wzcsapi.lib 导入库文件在 Windows SDK 中不可用。
示例
以下示例枚举由无线零配置服务管理的本地计算机上的无线 LAN 接口,并输出每个接口的接口 GUID 的值。
注意
此示例在 Windows Vista 和更高版本上将失败。
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <objbase.h>
#include <wtypes.h>
#include <stdio.h>
#include <stdlib.h>
// Wzcsapi.h and Wsczapi.lib were never shipped
// So we need to LOadlibrary and call the WZCEnumInterfaces function
// in Wzcsapi.dll in the
typedef struct
{
LPWSTR wszGuid;
} INTF_KEY_ENTRY, *PINTF_KEY_ENTRY;
typedef struct
{
DWORD dwNumIntfs;
PINTF_KEY_ENTRY pIntfs;
} INTFS_KEY_TABLE, *PINTFS_KEY_TABLE;
DWORD WZCEnumInterfaces(LPWSTR pSrvAddr, PINTFS_KEY_TABLE pIntfs);
//Define the function prototype
typedef DWORD (CALLBACK* WZCEnumInterfacesType)(LPWSTR, PINTFS_KEY_TABLE);
int wmain()
{
// Declare and initialize variables.
DWORD dwResult = 0;
// int iRet = 0;
// WCHAR GuidString[40] = {0};
int i;
/* variables used for WZCEnumInterfaces */
PINTFS_KEY_TABLE pIfList;
PINTF_KEY_ENTRY pIfInfo;
BOOL freeResult = FALSE;
BOOL runTimeLinkSuccess = FALSE;
HINSTANCE dllHandle = NULL;
WZCEnumInterfacesType WZCEnumInterfacesPtr = NULL;
// wprintf(L"Sample to test WZCEnumInterface\n");
//Load the dll and keep the handle to it
dllHandle = LoadLibrary( (LPCWSTR) L"wzcsapi.dll");
// If the handle is valid, try to get the function address.
if (dllHandle == NULL) {
dwResult = GetLastError();
wprintf(L"LoadLibrary of wzcsapi.dll failed with error: %d\n", dwResult);
if (dwResult == ERROR_MOD_NOT_FOUND)
wprintf(L"Error: The specified module could not be found\n");
return 1;
}
else
{
//Get pointer to our function using GetProcAddress:
WZCEnumInterfacesPtr = (WZCEnumInterfacesType) GetProcAddress(dllHandle,
"WZCEnumInterfaces");
if (WZCEnumInterfacesPtr != NULL)
runTimeLinkSuccess = TRUE;
else {
dwResult = GetLastError();
wprintf(L"GetProcAddress of WZCEnumInterfaces failed with error: %d\n", dwResult);
return 1;
}
// The function address is valid, allocate some memory for pIflist
pIfList = (PINTFS_KEY_TABLE) LocalAlloc(LMEM_ZEROINIT,4096);
if (pIfList == NULL) {
wprintf(L"Unable to allocate memory to store INTFS_KEY_TABLE\n");
freeResult = FreeLibrary(dllHandle);
return 1;
}
// If the function address is valid, call the function.
if (runTimeLinkSuccess)
{
dwResult = WZCEnumInterfacesPtr(NULL, pIfList);
if (dwResult != ERROR_SUCCESS) {
wprintf(L"WZCEnumInterfaces failed with error: %u\n", dwResult);
// FormatMessage can be used to find out why the function failed
//Free the library:
freeResult = FreeLibrary(dllHandle);
return 1;
}
else {
wprintf(L"Num Entries: %lu\n", pIfList->dwNumIntfs);
for (i = 0; i < (int) pIfList->dwNumIntfs; i++) {
pIfInfo = &pIfList->pIntfs[i];
if (pIfInfo->wszGuid == NULL)
wprintf(L" InterfaceGUID[%d]: NULL\n",i);
else
wprintf(L" InterfaceGUID[%d]: %ws\n",i, pIfInfo->wszGuid);
}
}
wprintf(L"\n");
}
freeResult = FreeLibrary(dllHandle);
}
if (pIfList != NULL) {
LocalFree(pIfList);
pIfList = NULL;
}
return 0;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows XP SP2 [仅限桌面应用] |
最低受支持的服务器 |
Windows Server 2003 [仅限桌面应用] |
终止客户端支持 |
Windows XP with SP3 |
终止服务器支持 |
Windows Server 2003 |
标头 |
|
库 |
|
DLL |
|
请参阅