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 パラメーターに含まれるビットマスクには、無効な型ビットが 1 つ以上含まれています。
E_OUTOFMEMORY
要求を完了するためのメモリが不足していました。
E_POINTER
UnitSchemaArray パラメーターと UnitCount パラメーターを 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 を含む)
Library Winbio.lib
[DLL] Winbio.dll

こちらもご覧ください

WinBioEnumDatabases

WinBioEnumEnrollments

WinBioEnumServiceProviders