Partager via


Fonction WinBioEnumDatabases (winbio.h)

Énumère toutes les bases de données inscrites qui correspondent à un type spécifié.

Syntaxe

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

Paramètres

[in] Factor

Masque de bits de WINBIO_BIOMETRIC_TYPE indicateurs qui spécifie les types d’unités biométriques à énumérer. Seule WINBIO_TYPE_FINGERPRINT est actuellement prise en charge.

[out] StorageSchemaArray

Adresse d’une variable qui reçoit un pointeur vers un tableau de structures WINBIO_STORAGE_SCHEMA qui contiennent des informations sur chaque base de données. Si la fonction échoue, le pointeur est défini sur NULL. Si la fonction réussit, vous devez passer le pointeur vers WinBioFree pour libérer la mémoire allouée en interne pour le tableau.

[out] StorageCount

Pointeur vers une valeur qui spécifie le nombre de structures pointées par le paramètre StorageSchemaArray .

Valeur retournée

Si la fonction réussit, elle retourne S_OK. Si la fonction échoue, elle retourne une valeur HRESULT qui indique l’erreur. Les valeurs possibles sont notamment celles figurant dans le tableau suivant. Pour obtenir la liste des codes d’erreur courants, consultez Valeurs HRESULT courantes.

Code de retour Description
E_INVALIDARG
Le masque de bits contenu dans le paramètre Factor contient un ou plusieurs bits de type non valides.
E_OUTOFMEMORY
La mémoire était insuffisante pour effectuer la demande.
E_POINTER
Les paramètres StorageSchemaArray et StorageCount ne peuvent pas être NULL.

Remarques

Seule WINBIO_TYPE_FINGERPRINT est actuellement prise en charge dans le paramètre Factor .

Si des informations sur plusieurs bases de données sont retournées dans le tableau de structures pointée par le paramètre StorageSchemaArray , il n’est pas garanti que les bases de données soient dans un ordre particulier.

Une fois que vous avez terminé d’utiliser les structures retournées au paramètre StorageSchemaArray , vous devez appeler WinBioFree pour libérer la mémoire allouée en interne pour le tableau.

Exemples

L’exemple de code suivant appelle WinBioEnumDatabases pour énumérer les bases de données biométriques sur le système. L’exemple inclut également une fonction, DisplayGuid, pour afficher l’ID de base de données. Créez un lien vers la bibliothèque statique Winbio.lib et incluez les fichiers d’en-tête suivants :

  • 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]
        );
}


Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winbio.h (inclure Winbio.h)
Bibliothèque Winbio.lib
DLL Winbio.dll

Voir aussi

WINBIO_STORAGE_SCHEMA

WinBioEnumBiometricUnits

WinBioEnumEnrollments

WinBioEnumServiceProviders