Compartir a través de


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
ERROR_ARENA_TRASHED
Los bloques de control de almacenamiento se destruyeron. Este error se devuelve si el servicio Wireless Zero Configuration no ha inicializado objetos internos.
RPC_S_UNKNOWN_IF
La interfaz es desconocida.
Este error se devuelve si no se inicia el servicio Wireless Zero Configuration.
RPC_X_NULL_REF_POINTER
Se pasó un puntero de referencia null al código auxiliar.
Este error se devuelve si el parámetro pIntfs es NULL.
ERROR_NOT_ENOUGH_MEMORY
No hay suficiente memoria disponible para procesar esta solicitud y asignar memoria para los resultados de la consulta.
RPC_STATUS
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
Wzcsapi.h
Biblioteca
Wzcsapi.lib
Archivo DLL
Wzcsapi.dll

Consulte también

INTFS_KEY_TABLE

INTF_KEY_ENTRY

WZCEapolGetInterfaceParams

WZCQueryInterface

WZCRefreshInterface