WinBioEnumDatabases 函数 (winbio.h)

枚举与指定类型匹配的所有已注册数据库。

Syntax

HRESULT WinBioEnumDatabases(
  [in]  WINBIO_BIOMETRIC_TYPE Factor,
  [out] WINBIO_STORAGE_SCHEMA **StorageSchemaArray,
  [out] SIZE_T                *StorageCount
);

参数

[in] Factor

指定要枚举的生物识别单元类型的WINBIO_BIOMETRIC_TYPE标志的位掩码。 目前仅支持 WINBIO_TYPE_FINGERPRINT

[out] StorageSchemaArray

接收指向包含每个数据库信息的 WINBIO_STORAGE_SCHEMA 结构的数组的指针的变量的地址。 如果函数未成功,指针将设置为 NULL。 如果函数成功,则必须将指针传递给 WinBioFree ,以释放为数组在内部分配的内存。

[out] StorageCount

指向指定 StorageSchemaArray 参数指向的结构数的值的指针。

返回值

如果函数成功,它将返回S_OK。 如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括但不限于下表中的值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值

返回代码 Description
E_INVALIDARG
Factor 参数中包含的位掩码包含一个或多个无效的类型位。
E_OUTOFMEMORY
内存不足,无法完成请求。
E_POINTER
StorageSchemaArrayStorageCount 参数不能为 NULL

注解

Factor 参数目前仅支持WINBIO_TYPE_FINGERPRINT

如果在 StorageSchemaArray 参数指向的结构数组中返回有关多个数据库的信息,则不能保证这些数据库按任何特定顺序排列。

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

例子

下面的代码示例调用 WinBioEnumDatabases 来枚举系统上的生物识别数据库。 该示例还包括用于显示数据库 ID 的函数 DisplayGuid。 链接到 Winbio.lib 静态库,并包含以下头文件:

  • Windows.h
  • Stdio.h
  • Conio.h
  • Winbio.h
HRESULT EnumDatabases( )
{
    // Declare variables.
    HRESULT hr = S_OK;
    PWINBIO_STORAGE_SCHEMA storageSchemaArray = NULL;
    SIZE_T storageCount = 0;
    SIZE_T index = 0;

    // Enumerate the databases.
    hr = WinBioEnumDatabases( 
            WINBIO_TYPE_FINGERPRINT,    // Type of biometric unit
            &storageSchemaArray,        // Array of database schemas
            &storageCount );            // Number of database schemas
    if (FAILED(hr))
    {
        wprintf_s(L"\nWinBioEnumDatabases failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }

    // Display information for each database.
    wprintf_s(L"\nDatabases:\n");
    for (index = 0; index < storageCount; ++index)
    {
        wprintf_s(L"\n[%d]: \tBiometric factor: 0x%08x\n", 
                 index, 
                 storageSchemaArray[index].BiometricFactor );
        
        wprintf_s(L"\tDatabase ID: ");
        DisplayGuid(&storageSchemaArray[index].DatabaseId);
        wprintf_s(L"\n");

        wprintf_s(L"\tData format: ");
        DisplayGuid(&storageSchemaArray[index].DataFormat);
        wprintf_s(L"\n");

        wprintf_s(L"\tAttributes:  0x%08x\n", 
                 storageSchemaArray[index].Attributes);

        wprintf_s(L"\tFile path:   %ws\n", 
                 storageSchemaArray[index].FilePath );

        wprintf_s(L"\tCnx string:  %ws\n", 
                 storageSchemaArray[index].ConnectionString );

        wprintf_s(L"\n");
    }

e_Exit:
    if (storageSchemaArray != NULL)
    {
        WinBioFree(storageSchemaArray);
        storageSchemaArray = NULL;
    }

    wprintf_s(L"\nPress any key to exit...");
    _getch();

    return hr;
}


//------------------------------------------------------------------------
// The following function displays a GUID to the console window.
//
VOID DisplayGuid( __in PWINBIO_UUID Guid )
{
    wprintf_s(
        L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
        Guid->Data1,
        Guid->Data2,
        Guid->Data3,
        Guid->Data4[0],
        Guid->Data4[1],
        Guid->Data4[2],
        Guid->Data4[3],
        Guid->Data4[4],
        Guid->Data4[5],
        Guid->Data4[6],
        Guid->Data4[7]
        );
}


要求

Requirement 价值
最低支持的客户端 Windows 7 [仅限桌面应用]
支持的最低服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows操作系统
Header winbio.h (包括 Winbio.h)
Library Winbio.lib
DLL Winbio.dll

另请参阅

WINBIO_STORAGE_SCHEMA

WinBioEnumBiometricUnits

WinBioEnumEnrollments

WinBioEnumServiceProviders