PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN Rückruffunktion (winbio_adapter.h)
Wird vom Windows Biometric Framework aufgerufen, um den Hash der abgeschlossenen Registrierungsvorlage in der Pipeline abzurufen.
Syntax
PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN PibioEngineGetEnrollmentHashFn;
HRESULT PibioEngineGetEnrollmentHashFn(
[in, out] PWINBIO_PIPELINE Pipeline,
[out] PUCHAR *HashValue,
[out] PSIZE_T HashSize
)
{...}
Parameter
[in, out] Pipeline
Zeiger auf eine WINBIO_PIPELINE Struktur, die der biometrischen Einheit zugeordnet ist, die den Vorgang ausführt.
[out] HashValue
Adresse der Variablen, die einen Zeiger auf ein Bytearray empfängt, das den Hash der Vorlage enthält.
[out] HashSize
Ein Zeiger auf eine Variable, die die Größe des Hashs in Bytes empfängt, auf den der HashValue-Parameter verweist.
Rückgabewert
Wenn die Funktion erfolgreich ist, wird S_OK zurückgegeben. Wenn die Funktion fehlschlägt, muss sie einen der folgenden HRESULT-Werte zurückgeben, um den Fehler anzugeben.
Rückgabecode | Beschreibung |
---|---|
|
Ein obligatorischer Zeigerparameter ist NULL. |
|
Der Engine-Adapter unterstützt keine Vorlagenhashgenerierung. |
|
Die Pipeline enthält keine abgeschlossene Registrierungsvorlage. |
Hinweise
Die von dieser Funktion als Hash versehene Vorlage muss die abgeschlossene Registrierungsvorlage sein, die in der Datenbank gespeichert wird, wenn EngineAdapterCommitEnrollment aufgerufen wird. Sie dürfen keinen Hash für eines der zwischengespeicherten Stichproben erstellen.
Der Algorithmus, der zum Generieren des Vorlagenhashs verwendet wird, ist der Algorithmus, der beim letzten Aufruf von EngineAdapterSetHashAlgorithm in dieser Pipeline ausgewählt wurde.
Der Speicher, der den Hash enthält, wird vom Engine-Adapter verwaltet, nachdem die EngineAdapterGetEnrollmentHash-Funktion erfolgreich zurückgegeben wurde. Der Moduladapter muss die Pufferadresse gültig lassen, bis das Framework eine der folgenden Funktionen aufruft:
Der Engine-Adapter muss auch einen separaten Hashpuffer für jede Pipeline verwalten.Beispiele
Der folgende Pseudocode zeigt eine mögliche Implementierung dieser Funktion. Das Beispiel wird nicht kompiliert. Sie müssen es an Ihren Zweck anpassen.
//////////////////////////////////////////////////////////////////////////////////////////
//
// 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;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbio_adapter.h (Winbio_adapter.h einschließen) |