Función WinBioEnumBiometricUnits (winbio.h)

Enumera todas las unidades biométricas adjuntas que coinciden con el tipo de entrada.

Sintaxis

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

Parámetros

[in] Factor

Máscara de bits de marcas de WINBIO_BIOMETRIC_TYPE que especifica los tipos de unidad biométrica que se van a enumerar. Actualmente solo se admite WINBIO_TYPE_FINGERPRINT .

[out] UnitSchemaArray

Dirección de una variable que recibe un puntero a una matriz de estructuras de WINBIO_UNIT_SCHEMA que contienen información sobre cada unidad biométrica enumerada. Si la función no se realiza correctamente, el puntero se establece en NULL. Si la función se ejecuta correctamente, debe pasar el puntero a WinBioFree para liberar la memoria asignada internamente para la matriz.

[out] UnitCount

Puntero a un valor que especifica el número de estructuras a las que apunta el parámetro UnitSchemaArray .

Valor devuelto

Si la función se ejecuta correctamente, devuelve S_OK. Si se produce un error en la función, devuelve un valor HRESULT que indica el error. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros. Para obtener una lista de códigos de error comunes, consulte Valores HRESULT comunes.

Código devuelto Descripción
E_INVALIDARG
La máscara de bits contenida en el parámetro Factor contiene uno o varios bits de tipo no válidos.
E_OUTOFMEMORY
No había memoria suficiente para completar la solicitud.
E_POINTER
Los parámetros UnitSchemaArray y UnitCount no pueden ser NULL.
WINBIO_E_DISABLED
La directiva administrativa actual prohíbe el uso de la API de Windows Biometric Framework.

Comentarios

Actualmente solo se admite WINBIO_TYPE_FINGERPRINT en el parámetro Factor .

Si se devuelve información sobre varias unidades biométricas instaladas en la matriz de estructuras a las que apunta el parámetro UnitSchemaArray , no se garantiza que las unidades estén en ningún orden determinado.

Una vez que haya terminado de usar las estructuras devueltas al parámetro UnitSchemaArray , debe llamar a WinBioFree para liberar la memoria asignada internamente para la matriz.

Si todos los bits de factor de la máscara de bits factor hacen referencia a tipos biométricos no admitidos, la función devuelve S_OK, pero el valor al que apunta el parámetro UnitSchemaArray será NULL y el parámetro UnitCount contendrá cero. Aunque no es un error consultar los factores biométricos no admitidos, el resultado de la consulta será un conjunto vacío.

Ejemplos

La siguiente función llama a WinBioEnumBiometricUnits para enumerar las unidades biométricas instaladas. Vincule a la biblioteca estática Winbio.lib e incluya los siguientes archivos de encabezado:

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


Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbio.h (incluya Winbio.h)
Library Winbio.lib
Archivo DLL Winbio.dll

Consulte también

WinBioEnumDatabases

WinBioEnumEnrollments

WinBioEnumServiceProviders