Condividi tramite


PIBIO_ENGINE_SET_HASH_ALGORITHM_FN funzione di callback (winbio_adapter.h)

Chiamato da Windows Biometric Framework per selezionare un algoritmo hash da usare nelle operazioni successive.

Sintassi

PIBIO_ENGINE_SET_HASH_ALGORITHM_FN PibioEngineSetHashAlgorithmFn;

HRESULT PibioEngineSetHashAlgorithmFn(
  [in, out] PWINBIO_PIPELINE Pipeline,
  [in]      SIZE_T AlgorithmBufferSize,
  [in]      PUCHAR AlgorithmBuffer
)
{...}

Parametri

[in, out] Pipeline

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

[in] AlgorithmBufferSize

Dimensione, in byte, del buffer specificato dal parametro AlgorithmBuffer .

[in] AlgorithmBuffer

Puntatore a una stringa ANSI con terminazione NULL contenente l'identificatore dell'oggetto dell'algoritmo hash da selezionare. Chiamare la funzione EngineAdapterQueryHashAlgorithms per recuperare una matrice degli identificatori OID (Algorithm Object Identifier) supportati.

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 l'hashing del modello.
E_INVALIDARG
L'adattatore del motore non supporta l'algoritmo hash specificato dal parametro AlgorithmBuffer .

Commenti

Windows Biometric Framework chiama questa funzione per configurare un'unità biometrica ogni volta che l'unità viene aggiunta a un pool di sensori.

Poiché un algoritmo hash viene selezionato per ogni pipeline, l'adattatore del motore deve archiviare l'algoritmo selezionato in un contesto di pipeline privata.

L'adattatore motore deve tenere traccia dell'algoritmo più recente selezionato e usare questo algoritmo durante l'elaborazione delle chiamate alle funzioni seguenti:

L'algoritmo scelto da questa funzione deve rimanere selezionato finché non viene chiamato il metodo EngineAdapterSetHashAlgorithm o finché non viene chiamato il metodo EngineAdapterDetach . In particolare, le chiamate alla funzione EngineAdapterClearContext non devono influire sull'algoritmo selezionato.

Solo l'algoritmo hash SHA1 viene usato da Windows Biometric Framework. Il valore della stringa OID per questo algoritmo è "1.3.14.3.2.26". Per altre informazioni, vedere EngineAdapterQueryHashAlgorithms.

Esempio

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

//////////////////////////////////////////////////////////////////////////////////////////
//
// EngineAdapterSetHashAlgorithm
//
// Purpose:
//      Selects a hash algorithm for use in subsequent operations.
//
// Parameters:
//      Pipeline            - Pointer to a WINBIO_PIPELINE structure associated 
//                            with the biometric unit performing the operation.   
//      AlgorithmBufferSize - Size, in bytes, of the buffer specified by the 
//                            AlgorithmBuffer parameter.
//      AlgorithmBuffer     - Pointer to a NULL-terminated ANSI string that 
//                            contains the object identifier of the hash algorithm
//                            to select.
//
static HRESULT
WINAPI
EngineAdapterSetHashAlgorithm(
    __inout PWINBIO_PIPELINE Pipeline,
    __in SIZE_T AlgorithmBufferSize,
    __in PUCHAR AlgorithmBuffer
    )
{
    ////////////////////////////////////////////////////////////////////////////
    // Return E_NOTIMPL here if your adapter does not support template hashing.
    ////////////////////////////////////////////////////////////////////////////

    HRESULT hr = S_OK;
    SIZE_T algorithmSize = (strlen(szOID_OIWSEC_sha1) + 1) * sizeof(CHAR);

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

    // Only the SHA1 hashing algorithm is supported.
    // Therefore, make certain that SHA1 is included in the algorithm
    // table.
    // The SHA1 object identifier, szOID_OIWSEC_sha1, is contained in the
    // Wincrypt.h header file.
    if (AlgorithmBufferSize != algorithmSize ||
        memcmp(AlgorithmBuffer, szOID_OIWSEC_sha1, algorithmSize) != 0)
    {
        hr = E_INVALIDARG;
        goto cleanup;
    }

    // Make any necessary changes to the adapter state to specify that
    // SHA1 hashing is enabled. If your adapter does not support template
    // hashing, return E_NOTIMPL.

cleanup:
    
    return hr;
}

Requisiti

Requisito Valore
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

EngineAdapterQueryHashAlgorithms

Funzioni plug-in