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 |
---|---|
|
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. |
|
L’interface est inconnue. Cette erreur est retournée si le service Wireless Zero Configuration n’est pas démarré. |
|
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. |
|
La mémoire disponible est insuffisante pour traiter cette requête et allouer de la mémoire aux résultats de la requête. |
|
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 |
|
Bibliothèque |
|
DLL |
|
Voir aussi