Поделиться через


Функция WinBioEnumDatabases (winbio.h)

Перечисляет все зарегистрированные базы данных, соответствующие указанному типу.

Синтаксис

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.

Код возврата Описание
E_INVALIDARG
Битовая маска, содержащаяся в параметре Factor, содержит один или несколько битов недопустимого типа.
E_OUTOFMEMORY
Недостаточно памяти для выполнения запроса.
E_POINTER
Параметры StorageSchemaArray и StorageCount не могут иметь значение NULL.

Комментарии

В настоящее время в параметре Factor поддерживаются только WINBIO_TYPE_FINGERPRINT.

Если сведения о нескольких базах данных возвращаются в массиве структур, на которые указывает параметр StorageSchemaArray , то базы данных не гарантируются в определенном порядке.

После завершения использования структур, возвращаемых параметру StorageSchemaArray , необходимо вызвать WinBioFree , чтобы освободить память, выделенную внутренним образом для массива.

Примеры

В следующем примере кода вызывается WinBioEnumDatabases для перечисления биометрических баз данных в системе. Пример также включает функцию 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]
        );
}


Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header winbio.h (включая Winbio.h)
Библиотека Winbio.lib
DLL Winbio.dll

См. также раздел

WINBIO_STORAGE_SCHEMA

WinBioEnumBiometricUnits

WinBioEnumEnumEnrollments

WinBioEnumServiceProviders