Condividi tramite


PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN funzione di callback (winbio_adapter.h)

Chiamato da Windows Biometric Framework per recuperare l'hash del modello di registrazione completato nella pipeline.

Sintassi

PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN PibioEngineGetEnrollmentHashFn;

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

Parametri

[in, out] Pipeline

Puntatore a una struttura WINBIO_PIPELINE associata all'unità biometrica che esegue l'operazione.

[out] HashValue

Indirizzo della variabile che riceve un puntatore a una matrice di byte che contiene l'hash del modello.

[out] HashSize

Puntatore a una variabile che riceve le dimensioni, in byte, dell'hash a cui punta il parametro HashValue .

Valore restituito

Se la funzione ha esito positivo, restituisce S_OK. Se la funzione ha esito negativo, deve restituire uno dei valori HRESULT seguenti per indicare l'errore.

Codice restituito Descrizione
E_POINTER
Un parametro puntatore obbligatorio è NULL.
E_NOTIMPL
L'adattatore del motore non supporta la generazione dell'hash del modello.
WINBIO_E_INVALID_DEVICE_STATE
La pipeline non contiene un modello di registrazione completato.

Commenti

Il modello con hashing da questa funzione deve essere il modello di registrazione completato che verrà archiviato nel database quando viene chiamato EngineAdapterCommitEnrollment . Non è necessario eseguire l'hashing di uno degli esempi intermedi acquisiti.

L'algoritmo usato per generare l'hash del modello è che è stato selezionato dalla chiamata più recente, in questa pipeline, a EngineAdapterSetHashAlgorithm.

La memoria che contiene l'hash è di proprietà e gestita dall'adattatore del motore dopo che la funzione EngineAdapterGetEnrollmentHash viene restituita correttamente. L'adattatore del motore deve mantenere valido l'indirizzo del buffer fino a quando il framework non chiama una delle funzioni seguenti:

L'adattatore del motore deve anche mantenere un buffer hash separato per ogni pipeline.

Esempio

Lo pseudocodice seguente mostra una possibile implementazione di questa funzione. L'esempio non viene compilato. Devi adattarla al tuo scopo.

//////////////////////////////////////////////////////////////////////////////////////////
//
// 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;
}

Requisiti

   
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbio_adapter.h (includere Winbio_adapter.h)

Vedi anche

Funzioni plug-in