Partager via


WZCEnumInterfaces, fonction

[WZCEnumInterfaces n’est plus pris en charge à partir de Windows Vista et Windows Server 2008. Utilisez plutôt la fonction WlanEnumInterfaces . Pour plus d’informations, consultez À propos de l’API Wifi native.]

La fonction WZCEnumInterfaces énumère toutes les interfaces LAN sans fil gérées par le service Wireless Zero Configuration.

Syntaxe

DWORD WZCEnumInterfaces(
  _In_  LPWSTR           pSrvAddr,
  _Out_ PINTFS_KEY_TABLE pIntfs
);

Paramètres

pSrvAddr [in]

Pointeur vers une chaîne contenant le nom de l’ordinateur sur lequel exécuter cette fonction. Si ce paramètre a la valeur NULL, le service Wireless Zero Configuration est énuméré sur l’ordinateur local.

Si le paramètre pSrvAddr spécifié est un ordinateur distant, l’ordinateur distant doit prendre en charge les appels RPC distants.

pIntfs [out]

Pointeur vers une structure de INTFS_KEY_TABLE qui contient une table d’informations clés pour toutes les interfaces.

Valeur retournée

Si la fonction réussit, la valeur de retour est ERROR_SUCCESS.

Si la fonction échoue, la valeur de retour peut être l’un des codes de retour suivants.

Code de retour Description
ERROR_ARENA_TRASHED
Les blocs de contrôle de stockage ont été détruits. Cette erreur est retournée si le service Wireless Zero Configuration n’a pas initialisé d’objets internes.
RPC_S_UNKNOWN_IF
L’interface est inconnue.
Cette erreur est retournée si le service Wireless Zero Configuration n’est pas démarré.
RPC_X_NULL_REF_POINTER
Un pointeur de référence Null a été passé au stub.
Cette erreur est retournée si le paramètre pIntfs a la valeur NULL.
ERROR_NOT_ENOUGH_MEMORY
La mémoire disponible est insuffisante pour traiter cette requête et allouer de la mémoire aux résultats de la requête.
RPC_STATUS
Différents codes d’erreur.

 

Notes

Le membre dwNumIntfs de la structure INTFS_KEY_TABLE pointée par pIntf doit avoir la valeur 0 avant d’appeler la fonction WZCEnumInterfaces . En outre, le membre pIntfs doit être défini sur NULL.

Pour les appels ultérieurs à d’autres fonctions wireless Zero Configuration, une application doit identifier l’interface sur laquelle elle fonctionne en fournissant des informations clés pertinentes retournées par la fonction WZCEnumInterfaces .

Si WZCEnumInterfaces retourne ERROR_SUCCESS, l’appelant doit appeler LocalFree pour libérer les mémoires tampons internes allouées aux données retournées une fois que ces informations ne sont plus nécessaires.

Notes

Le fichier d’en-tête Wzcsapi.h et le fichier de bibliothèque d’importation Wzcsapi.lib ne sont pas disponibles dans le Kit de développement logiciel (SDK) Windows.

 

Exemples

L’exemple suivant énumère les interfaces LAN sans fil sur l’ordinateur local géré par le service Configuration zéro sans fil et imprime la valeur du GUID d’interface pour chaque interface.

Notes

Cet exemple échoue sur Windows Vista et versions ultérieures.

 

#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;
}

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows XP avec SP2 [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2003 [applications de bureau uniquement]
Fin de la prise en charge des clients
Windows XP avec SP3
Fin de la prise en charge des serveurs
Windows Server 2003
En-tête
Wzcsapi.h
Bibliothèque
Wzcsapi.lib
DLL
Wzcsapi.dll

Voir aussi

INTFS_KEY_TABLE

INTF_KEY_ENTRY

WZCEapolGetInterfaceParams

WZCQueryInterface

WZCRefreshInterface