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
UnitSchemaArrayUnitCount 参数不能为 NULL
WINBIO_E_DISABLED
当前管理策略禁止使用 Windows 生物识别框架 API。

注解

Factor 参数目前仅支持WINBIO_TYPE_FINGERPRINT

如果在 UnitSchemaArray 参数指向的结构数组中返回有关多个已安装生物识别单元的信息,则不保证这些单位按任何特定顺序排列。

使用返回到 UnitSchemaArray 参数的结构后,必须调用 WinBioFree 以释放内部为数组分配的内存。

如果因子位掩码中的所有因子位都引用不支持的生物识别类型,则该函数将返回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
标头 winbio.h (包括 Winbio.h)
Library Winbio.lib
DLL Winbio.dll

另请参阅

WinBioEnumDatabases

WinBioEnumEnrollments

WinBioEnumServiceProviders