WZCEnumInterfaces-Funktion
[WZCEnumInterfaces wird ab Windows Vista und Windows Server 2008 nicht mehr unterstützt. Verwenden Sie stattdessen die WlanEnumInterfaces-Funktion . Weitere Informationen finden Sie unter Informationen zur nativen Wifi-API.]
Die WZCEnumInterfaces-Funktion listet alle wlan-Schnittstellen auf, die vom Wireless Zero Configuration-Dienst verwaltet werden.
Syntax
DWORD WZCEnumInterfaces(
_In_ LPWSTR pSrvAddr,
_Out_ PINTFS_KEY_TABLE pIntfs
);
Parameter
-
pSrvAddr [in]
-
Ein Zeiger auf eine Zeichenfolge, die den Namen des Computers enthält, auf dem diese Funktion ausgeführt werden soll. Wenn dieser Parameter NULL ist, wird der Wireless Zero Configuration-Dienst auf dem lokalen Computer aufgezählt.
Wenn der angegebene pSrvAddr-Parameter ein Remotecomputer ist, muss der Remotecomputer RPC-Remoteaufrufe unterstützen.
-
pIntfs [out]
-
Ein Zeiger auf eine INTFS_KEY_TABLE-Struktur , die eine Tabelle mit Schlüsselinformationen für alle Schnittstellen enthält.
Rückgabewert
Wenn die Funktion erfolgreich ist, wird der Rückgabewert ERROR_SUCCESS.
Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden Rückgabecodes sein.
Rückgabecode | Beschreibung |
---|---|
|
Die Speicherkontrollblöcke wurden zerstört. Dieser Fehler wird zurückgegeben, wenn der Wireless Zero Configuration-Dienst keine internen Objekte initialisiert hat. |
|
Die Schnittstelle ist unbekannt. Dieser Fehler wird zurückgegeben, wenn der Wireless Zero Configuration-Dienst nicht gestartet wird. |
|
Ein NULL-Verweiszeiger wurde an den Stub übergeben. Dieser Fehler wird zurückgegeben, wenn der pIntfs-ParameterNULL ist. |
|
Es ist nicht genügend Arbeitsspeicher verfügbar, um diese Anforderung zu verarbeiten und Arbeitsspeicher für die Abfrageergebnisse zuzuweisen. |
|
Verschiedene Fehlercodes. |
Bemerkungen
Der dwNumIntfs-Member der INTFS_KEY_TABLE Struktur, auf die pIntf verweist, muss vor dem Aufrufen der WZCEnumInterfaces-Funktion auf 0 festgelegt werden. Außerdem muss der pIntfs-Member auf NULL festgelegt werden.
Für nachfolgende Aufrufe von anderen Wireless Zero Configuration-Funktionen muss eine Anwendung die Schnittstelle identifizieren, auf der sie arbeitet, indem sie relevante Schlüsselinformationen bereitstellt, die von der WZCEnumInterfaces-Funktion zurückgegeben werden.
Wenn WZCEnumInterfaces ERROR_SUCCESS zurückgibt, sollte der Aufrufer LocalFree aufrufen, um die internen Puffer freizugeben, die den zurückgegebenen Daten zugeordnet sind, sobald diese Informationen nicht mehr benötigt werden.
Hinweis
Die Wzcsapi.h-Headerdatei und die Importbibliotheksdatei Wzcsapi.lib sind im Windows SDK nicht verfügbar.
Beispiele
Im folgenden Beispiel werden die WLAN-Schnittstellen auf dem lokalen Computer aufgelistet, der vom Wireless Zero Configuration-Dienst verwaltet wird, und gibt den Wert für die Schnittstellen-GUID für jede Schnittstelle aus.
Hinweis
In diesem Beispiel tritt unter Windows Vista und höher ein Fehler auf.
#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;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows XP mit SP2 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Windows Server 2003 [nur Desktop-Apps] |
Ende des Supports (Client) |
Windows XP mit SP3 |
Ende des Supports (Server) |
Windows Server 2003 |
Header |
|
Bibliothek |
|
DLL |
|
Siehe auch