Função WinBioEnumBiometricUnits (winbio.h)

Enumera todas as unidades biométricas anexadas que correspondem ao tipo de entrada.

Sintaxe

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

Parâmetros

[in] Factor

Uma máscara de bits de sinalizadores WINBIO_BIOMETRIC_TYPE que especifica os tipos de unidade biométrica a serem enumerados. Somente WINBIO_TYPE_FINGERPRINT tem suporte no momento.

[out] UnitSchemaArray

Endereço de uma variável que recebe um ponteiro para uma matriz de estruturas WINBIO_UNIT_SCHEMA que contêm informações sobre cada unidade biométrica enumerada. Se a função não for bem-sucedida, o ponteiro será definido como NULL. Se a função for bem-sucedida, você deverá passar o ponteiro para WinBioFree para liberar a memória alocada internamente para a matriz.

[out] UnitCount

Ponteiro para um valor que especifica o número de estruturas apontadas pelo parâmetro UnitSchemaArray .

Retornar valor

Se a função for bem-sucedida, ela retornará S_OK. Se a função falhar, ela retornará um valor HRESULT que indica o erro. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir. Para obter uma lista de códigos de erro comuns, consulte Valores HRESULT comuns.

Código de retorno Descrição
E_INVALIDARG
A máscara de bits contida no parâmetro Factor contém um ou mais bits de tipo inválidos.
E_OUTOFMEMORY
Não havia memória suficiente para concluir a solicitação.
E_POINTER
Os parâmetros UnitSchemaArray e UnitCount não podem ser NULL.
WINBIO_E_DISABLED
A política administrativa atual proíbe o uso da API do Windows Biometric Framework.

Comentários

Somente WINBIO_TYPE_FINGERPRINT atualmente tem suporte no parâmetro Factor .

Se informações sobre várias unidades biométricas instaladas forem retornadas na matriz de estruturas apontadas pelo parâmetro UnitSchemaArray , não haverá garantia de que as unidades estejam em nenhuma ordem específica.

Depois de terminar de usar as estruturas retornadas para o parâmetro UnitSchemaArray , você deve chamar WinBioFree para liberar a memória alocada internamente para a matriz.

Se todos os bits de fator na máscara de bits Factor se referirem a tipos biométricos sem suporte, a função retornará S_OK mas o valor apontado pelo parâmetro UnitSchemaArray será NULL e o parâmetro UnitCount conterá zero. Embora não seja um erro perguntar sobre fatores biométricos sem suporte, o resultado da consulta será um conjunto vazio.

Exemplos

A função a seguir chama WinBioEnumBiometricUnits para enumerar as unidades biométricas instaladas. Link para a biblioteca estática Winbio.lib e inclua os seguintes arquivos de cabeçalho:

  • 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 Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winbio.h (inclua Winbio.h)
Biblioteca Winbio.lib
DLL Winbio.dll

Confira também

WinBioEnumDatabases

WinBioEnumEnrollments

WinBioEnumServiceProviders