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


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

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

Синтаксис

HRESULT WinBioEnumBiometricUnits(
  [in]  WINBIO_BIOMETRIC_TYPE Factor,
  [out] WINBIO_UNIT_SCHEMA    **UnitSchemaArray,
  [out] SIZE_T                *UnitCount
);

Параметры

[in] Factor

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

[out] UnitSchemaArray

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

[out] UnitCount

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

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

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

Код возврата Описание
E_INVALIDARG
Битовая маска, содержащаяся в параметре Factor, содержит один или несколько битов недопустимого типа.
E_OUTOFMEMORY
Недостаточно памяти для выполнения запроса.
E_POINTER
Параметры UnitSchemaArray и UnitCount не могут иметь значение NULL.
WINBIO_E_DISABLED
Текущая административная политика запрещает использование API Windows Biometric Framework.

Комментарии

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

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

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

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

Примеры

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

  • Windows.h
  • Stdio.h
  • Conio.h
  • Winbio.h
HRESULT EnumerateSensors( )
{
    // Declare variables.
    HRESULT hr = S_OK;
    PWINBIO_UNIT_SCHEMA unitSchema = NULL;
    SIZE_T unitCount = 0;
    SIZE_T index = 0;

    // Enumerate the installed biometric units.
    hr = WinBioEnumBiometricUnits( 
            WINBIO_TYPE_FINGERPRINT,        // Type of biometric unit
            &unitSchema,                    // Array of unit schemas
            &unitCount );                   // Count of unit schemas

    if (FAILED(hr))
    {
        wprintf_s(L"\n WinBioEnumBiometricUnits failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }

    // Display information for each installed biometric unit.
    wprintf_s(L"\nSensors: \n");
    for (index = 0; index < unitCount; ++index)
    {
        wprintf_s(L"\n[%d]: \tUnit ID: %d\n", 
                 index, 
                 unitSchema[index].UnitId );
        wprintf_s(L"\tDevice instance ID: %s\n", 
                 unitSchema[index].DeviceInstanceId );
        wprintf_s(L"\tPool type: %d\n", 
                 unitSchema[index].PoolType );
        wprintf_s(L"\tBiometric factor: %d\n", 
                 unitSchema[index].BiometricFactor );
        wprintf_s(L"\tSensor subtype: %d\n", 
                 unitSchema[index].SensorSubType );
        wprintf_s(L"\tSensor capabilities: 0x%08x\n", 
                 unitSchema[index].Capabilities );
        wprintf_s(L"\tDescription: %s\n", 
                 unitSchema[index].Description );
        wprintf_s(L"\tManufacturer: %s\n", 
                 unitSchema[index].Manufacturer );
        wprintf_s(L"\tModel: %s\n", 
                 unitSchema[index].Model );
        wprintf_s(L"\tSerial no: %s\n", 
                 unitSchema[index].SerialNumber );
        wprintf_s(L"\tFirmware version: [%d.%d]\n", 
                 unitSchema[index].FirmwareVersion.MajorVersion, 
                 unitSchema[index].FirmwareVersion.MinorVersion);
    }


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

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

    return hr;
}


Требования

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

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

Базы данных WinBioEnum

WinBioEnumEnumEnrollments

WinBioEnumServiceProviders