Partager via


PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN fonction de rappel (winbio_adapter.h)

Appelé par l’infrastructure biométrique Windows pour récupérer le hachage du modèle d’inscription terminé dans le pipeline.

Syntaxe

PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN PibioEngineGetEnrollmentHashFn;

HRESULT PibioEngineGetEnrollmentHashFn(
  [in, out] PWINBIO_PIPELINE Pipeline,
  [out]     PUCHAR *HashValue,
  [out]     PSIZE_T HashSize
)
{...}

Paramètres

[in, out] Pipeline

Pointeur vers une structure WINBIO_PIPELINE associée à l’unité biométrique qui effectue l’opération.

[out] HashValue

Adresse de la variable qui reçoit un pointeur vers un tableau d’octets qui contient le hachage du modèle.

[out] HashSize

Pointeur vers une variable qui reçoit la taille, en octets, du hachage pointé vers le paramètre HashValue .

Valeur retournée

Si la fonction réussit, elle retourne S_OK. Si la fonction échoue, elle doit retourner l’une des valeurs HRESULT suivantes pour indiquer l’erreur.

Code de retour Description
E_POINTER
Un paramètre de pointeur obligatoire est NULL.
E_NOTIMPL
L’adaptateur moteur ne prend pas en charge la génération de hachage de modèle.
WINBIO_E_INVALID_DEVICE_STATE
Le pipeline ne contient pas de modèle d’inscription terminé.

Remarques

Le modèle haché par cette fonction doit être le modèle d’inscription terminé qui sera stocké dans la base de données lors de l’appel de EngineAdapterCommitEnrollment . Vous ne devez pas hacher l’un des exemples capturés intermédiaires.

L’algorithme utilisé pour générer le hachage du modèle est celui qui a été sélectionné par l’appel le plus récent, sur ce pipeline, à EngineAdapterSetHashAlgorithm.

La mémoire qui contient le hachage est détenue et gérée par l’adaptateur de moteur une fois que la fonction EngineAdapterGetEnrollmentHash est retournée avec succès. L’adaptateur moteur doit conserver l’adresse de mémoire tampon valide jusqu’à ce que l’infrastructure appelle l’une des fonctions suivantes :

L’adaptateur moteur doit également conserver une mémoire tampon de hachage distincte pour chaque pipeline.

Exemples

Le pseudocode suivant montre une implémentation possible de cette fonction. L’exemple ne se compile pas. Vous devez l’adapter à votre objectif.

//////////////////////////////////////////////////////////////////////////////////////////
//
// EngineAdapterGetEnrollmentHash
//
// Purpose:
//      Retrieves the hash of the completed enrollment template in the pipeline.
//
// Parameters:
//      Pipeline        - Pointer to a WINBIO_PIPELINE structure associated 
//                        with the biometric unit performing the operation
//      HashValue       - Contains the hash of the template
//      HashSize        - Size, in bytes, of the hash pointed to by the 
//                        HashValue parameter
//
static HRESULT
WINAPI
EngineAdapterGetEnrollmentHash(
    __inout PWINBIO_PIPELINE Pipeline,
    __out PUCHAR *HashValue,
    __out PSIZE_T HashSize
    )
{
    ////////////////////////////////////////////////////////////////////////////
    // Return E_NOTIMPL here if your adapter does not support template hashing.
    ////////////////////////////////////////////////////////////////////////////

    HRESULT hr = S_OK;

    // Verify that pointer arguments are not NULL.
    if (!ARGUMENT_PRESENT(Pipeline) ||
        !ARGUMENT_PRESENT(HashValue) ||
        !ARGUMENT_PRESENT(HashSize))
    {
        hr = E_POINTER;
        goto cleanup;
    }

    // Retrieve the context from the pipeline.
    PWINBIO_ENGINE_CONTEXT context = 
           (PWINBIO_ENGINE_CONTEXT)Pipeline->EngineContext;

    // Return if an enrollment is not in progress. This example assumes that 
    // an enrollment object is part of your engine context structure.
    if (context->Enrollment.InProgress != TRUE)
    {
        hr = WINBIO_E_INVALID_DEVICE_STATE;
        goto cleanup;
    }

    // Initialize the hash.
    *HashValue = NULL;
    *HashSize = 0;

    // If your engine adapter supports template hashing, call a custom function
    // (_AdapterGenerateHashForTemplate) to calculate the hash of the new
    // enrollment template. The hash value should be saved in the adapter
    // context.
    hr = _AdapterGenerateHashForTemplate(
                context,
                context->Enrollment.Template, 
                context->Enrollment.TemplateSize,
                context->HashBuffer,
                &context->HashSize
                );
    if (FAILED(hr))
    {
        goto cleanup;
    }

    // Return the hash to the caller.
    *HashValue = context->HashBuffer;
    *HashSize = context->HashSize;

cleanup:

    return hr;
}

Configuration requise

   
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_adapter.h (include Winbio_adapter.h)

Voir aussi

Fonctions de plug-in