Función WZCEnumInterfaces
[WZCEnumInterfaces ya no se admite a partir de Windows Vista y Windows Server 2008. En su lugar, use la función WlanEnumInterfaces . Para obtener más información, consulte Acerca de la API Wifi nativa.]
La función WZCEnumInterfaces enumera todas las interfaces LAN inalámbricas administradas por el servicio Wireless Zero Configuration.
Sintaxis
DWORD WZCEnumInterfaces(
_In_ LPWSTR pSrvAddr,
_Out_ PINTFS_KEY_TABLE pIntfs
);
Parámetros
-
pSrvAddr [in]
-
Puntero a una cadena que contiene el nombre del equipo en el que se va a ejecutar esta función. Si este parámetro es NULL, el servicio Wireless Zero Configuration se enumera en el equipo local.
Si el parámetro pSrvAddr especificado es un equipo remoto, el equipo remoto debe admitir llamadas RPC remotas.
-
pIntfs [out]
-
Puntero a una estructura INTFS_KEY_TABLE que contiene una tabla de información clave para todas las interfaces.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS.
Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes códigos de retorno.
Código devuelto | Descripción |
---|---|
|
Los bloques de control de almacenamiento se destruyeron. Este error se devuelve si el servicio Wireless Zero Configuration no ha inicializado objetos internos. |
|
La interfaz es desconocida. Este error se devuelve si no se inicia el servicio Wireless Zero Configuration. |
|
Se pasó un puntero de referencia null al código auxiliar. Este error se devuelve si el parámetro pIntfs es NULL. |
|
No hay suficiente memoria disponible para procesar esta solicitud y asignar memoria para los resultados de la consulta. |
|
Varios códigos de error. |
Comentarios
El miembro dwNumIntfs de la estructura INTFS_KEY_TABLE a la que apunta pIntf debe establecerse en 0 antes de llamar a la función WZCEnumInterfaces . Además, el miembro pIntfs debe establecerse en NULL.
Para llamadas posteriores a otras funciones de configuración inalámbrica cero, una aplicación debe identificar la interfaz en la que está funcionando proporcionando información clave relevante devuelta por la función WZCEnumInterfaces .
Si WZCEnumInterfaces devuelve ERROR_SUCCESS, el autor de la llamada debe llamar a LocalFree para liberar los búferes internos asignados a los datos devueltos una vez que esta información ya no sea necesaria.
Nota
El archivo de encabezado Wzcsapi.h y el archivo de biblioteca de importación Wzcsapi.lib no están disponibles en Windows SDK.
Ejemplos
En el ejemplo siguiente se enumeran las interfaces LAN inalámbricas en el equipo local administrado por el servicio Wireless Zero Configuration y se imprime el valor de GUID de interfaz para cada interfaz.
Nota
En este ejemplo se producirá un error en Windows Vista y versiones posteriores.
#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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows XP con SP2 [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
Windows Server 2003 [solo aplicaciones de escritorio] |
Fin de compatibilidad de cliente |
Windows XP con SP3 |
Fin de compatibilidad de servidor |
Windows Server 2003 |
Encabezado |
|
Biblioteca |
|
Archivo DLL |
|
Consulte también