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


Функция WinBioEnumServiceProviders (winbio.h)

Извлекает сведения об установленных поставщиках биометрических услуг. Начиная с Windows 10 сборки 1607 эта функция доступна для использования с мобильным образом.

Синтаксис

HRESULT WinBioEnumServiceProviders(
  [in]  WINBIO_BIOMETRIC_TYPE Factor,
  [out] WINBIO_BSP_SCHEMA     **BspSchemaArray,
  [out] SIZE_T                *BspCount
);

Параметры

[in] Factor

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

[out] BspSchemaArray

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

[out] BspCount

Указатель на значение, указывающее количество структур, на которые указывает параметр BspSchemaArray .

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

Если функция завершается успешно, она возвращает S_OK. Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

Код возврата Описание
E_INVALIDARG
Битовая маска, содержащаяся в параметре Factor, содержит один или несколько битов недопустимого типа.
E_OUTOFMEMORY
Недостаточно памяти для выполнения запроса.
E_POINTER
Параметры BspSchemaArray и BspCount не могут иметь значение NULL.

Комментарии

В настоящее время в параметре Factor поддерживаются только WINBIO_TYPE_FINGERPRINT.

После завершения использования структур, возвращаемых параметру BspSchemaArray , необходимо вызвать WinBioFree , чтобы освободить память, выделенную внутренним образом для массива.

Если все биты коэффициентов в битовой маске factor ссылаются на неподдерживаемые биометрические типы, функция возвращает S_OK но значение, указанное параметром BspSchemaArray , будет иметь значение NULL , а параметр BspCount будет содержать ноль. Хотя запрос о неподдерживаемых биометрических факторах не является ошибкой, результатом запроса будет пустой набор.

Примеры

В следующем примере кода вызывается WinBioEnumServiceProviders для перечисления установленных поставщиков служб. Пример также включает функцию DisplayGuid для отображения идентификатора поставщика. Ссылка на статическую библиотеку Winbio.lib и включение следующих файлов заголовков:

  • Windows.h
  • Stdio.h
  • Conio.h
  • Winbio.h
HRESULT EnumSvcProviders( )
{
    // Declare variables.
    HRESULT hr = S_OK;
    PWINBIO_BSP_SCHEMA bspSchemaArray = NULL;
    SIZE_T bspCount = 0;
    SIZE_T index = 0;

    // Enumerate the service providers.
    hr = WinBioEnumServiceProviders( 
            WINBIO_TYPE_FINGERPRINT,    // Provider to enumerate
            &bspSchemaArray,            // Provider schema array
            &bspCount );                // Number of schemas returned
    if (FAILED(hr))
    {
        wprintf_s(L"\n WinBioEnumServiceProviders failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }

    // Display the schema information.
    wprintf_s(L"\nService providers: \n");
    for (index = 0; index < bspCount; ++index)
    {
        wprintf_s(L"\n[%d]: \tBiometric factor: 0x%08x\n", 
                 index, 
                 bspSchemaArray[index].BiometricFactor );
        
        wprintf_s(L"\tBspId: ");
        DisplayGuid(&bspSchemaArray[index].BspId);
        wprintf_s(L"\n");

        wprintf_s(L"\tDescription: %ws\n", 
                 bspSchemaArray[index].Description);
        wprintf_s(L"\tVendor: %ws\n", 
                 bspSchemaArray[index].Vendor );
        wprintf_s(L"\tVersion: %d.%d\n", 
                 bspSchemaArray[index].Version.MajorVersion, 
                 bspSchemaArray[index].Version.MinorVersion);

        wprintf_s(L"\n");
    } 

e_Exit:
    if (bspSchemaArray != NULL)
    {
        WinBioFree(bspSchemaArray);
        bspSchemaArray = NULL;
    }

    wprintf_s(L"\nPress any key to exit...");
    _getch();

    return hr;
}

//------------------------------------------------------------------------
// The following function displays a GUID to the console window.
//
VOID DisplayGuid( __in PWINBIO_UUID Guid )
{
    wprintf_s(
        L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
        Guid->Data1,
        Guid->Data2,
        Guid->Data3,
        Guid->Data4[0],
        Guid->Data4[1],
        Guid->Data4[2],
        Guid->Data4[3],
        Guid->Data4[4],
        Guid->Data4[5],
        Guid->Data4[6],
        Guid->Data4[7]
        );
}


Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header winbio.h (включая Winbio.h)
Библиотека Winbio.lib
DLL Winbio.dll

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

WinBioEnumBiometricUnits

Базы данных WinBioEnum

WinBioEnumEnumEnrollments