다음을 통해 공유


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를 호출하여 배열에 대해 내부적으로 할당된 메모리를 해제해야 합니다.

Factor 비트 마스크의 모든 요소 비트가 지원되지 않는 생체 인식 형식을 참조하는 경우 함수는 S_OK 반환하지만 UnitSchemaArray 매개 변수가 가리키는 값은 NULL이고 UnitCount 매개 변수는 0을 포함합니다. 지원되지 않는 생체 인식 요인에 대해 문의하는 것은 오류가 아니지만 쿼리 결과는 빈 집합이 됩니다.

예제

다음 함수는 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 포함)
라이브러리 Winbio.lib
DLL Winbio.dll

추가 정보

WinBioEnumDatabases

WinBioEnumEnrollments

WinBioEnumServiceProviders