Поделиться через


Функция WZCEnumInterfaces

[WZCEnumInterfaces больше не поддерживается в Windows Vista и Windows Server 2008. Вместо этого используйте функцию WlanEnumInterfaces . Дополнительные сведения см. в разделе Сведения об API Нативного Wi-Fi.]

Функция WZCEnumInterfaces перечисляет все интерфейсы беспроводной локальной сети, управляемые службой конфигурации wireless zero.

Синтаксис

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

Параметры

pSrvAddr [in]

Указатель на строку, содержащую имя компьютера, на котором выполняется эта функция. Если этот параметр имеет значение NULL, то на локальном компьютере перечисляется служба беспроводной конфигурации нулевой конфигурации.

Если указанный параметр pSrvAddr является удаленным компьютером, удаленный компьютер должен поддерживать удаленные вызовы RPC.

pIntfs [out]

Указатель на структуру INTFS_KEY_TABLE , содержащую таблицу ключевых сведений для всех интерфейсов.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение будет ERROR_SUCCESS.

Если функция завершается сбоем, возвращаемое значение может быть одним из следующих кодов возврата.

Код возврата Описание
ERROR_ARENA_TRASHED
Блоки управления хранилищем были уничтожены. Эта ошибка возвращается, если служба конфигурации беспроводной сети не инициализировала внутренние объекты.
RPC_S_UNKNOWN_IF
Интерфейс неизвестен.
Эта ошибка возвращается, если служба настройки беспроводной сети не запущена.
RPC_X_NULL_REF_POINTER
В заглушку передан пустой указатель ссылки.
Эта ошибка возвращается, если параметр pIntfs имеет значение NULL.
ERROR_NOT_ENOUGH_MEMORY
Недостаточно памяти для обработки этого запроса и выделения памяти для результатов запроса.
RPC_STATUS
Различные коды ошибок.

 

Комментарии

Член dwNumIntfsструктуры INTFS_KEY_TABLE , на которую указывает pIntf , должен иметь значение 0 перед вызовом функции WZCEnumInterfaces . Кроме того, член pIntfs должен иметь значение NULL.

Для последующих вызовов других функций беспроводной конфигурации нулевой конфигурации приложение должно определить интерфейс, с которым оно работает, предоставив соответствующие сведения о ключе, возвращаемые функцией WZCEnumInterfaces .

Если WZCEnumInterfaces возвращает ERROR_SUCCESS, вызывающий объект должен вызвать LocalFree , чтобы освободить внутренние буферы, выделенные для возвращаемых данных, когда эта информация больше не нужна.

Примечание

Файл заголовка Wzcsapi.h и файл библиотеки импорта Wzcsapi.lib недоступны в windows SDK.

 

Примеры

В следующем примере перечисляются интерфейсы беспроводной локальной сети на локальном компьютере, управляемом службой беспроводной нулевой конфигурации, и выводится значение GUID интерфейса для каждого интерфейса.

Примечание

В этом примере произойдет сбой в Windows Vista и более поздних версиях .

 

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

Требования

Требование Значение
Минимальная версия клиента
Windows XP с пакетом обновления 2 (SP2) [только классические приложения]
Минимальная версия сервера
Windows Server 2003 [только классические приложения]
Окончание поддержки клиентов
Windows XP с пакетом обновления 3 (SP3)
Окончание поддержки сервера
Windows Server 2003
Заголовок
Wzcsapi.h
Библиотека
Wzcsapi.lib
DLL
Wzcsapi.dll

См. также раздел

INTFS_KEY_TABLE

INTF_KEY_ENTRY

WZCEapolGetInterfaceParams

WZCQueryInterface

WZCRefreshInterface