функция обратного вызова PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN (winbio_adapter.h)
Вызывается биометрической платформой Windows для получения хэша готового шаблона регистрации в конвейере.
Синтаксис
PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN PibioEngineGetEnrollmentHashFn;
HRESULT PibioEngineGetEnrollmentHashFn(
[in, out] PWINBIO_PIPELINE Pipeline,
[out] PUCHAR *HashValue,
[out] PSIZE_T HashSize
)
{...}
Параметры
[in, out] Pipeline
Указатель на структуру WINBIO_PIPELINE , связанную с биометрической единицей, выполняющей операцию.
[out] HashValue
Адрес переменной, получающей указатель на массив байтов, содержащий хэш шаблона.
[out] HashSize
Указатель на переменную, получающую размер (в байтах) хэша, на который указывает параметр HashValue .
Возвращаемое значение
Если функция выполняется успешно, она возвращает S_OK. Если функция завершается сбоем, она должна вернуть одно из следующих значений HRESULT , чтобы указать на ошибку.
Код возврата | Описание |
---|---|
|
Обязательный параметр указателя имеет значение NULL. |
|
Адаптер обработчика не поддерживает создание хэша шаблона. |
|
Конвейер не содержит готовый шаблон регистрации. |
Комментарии
Шаблон, хэшированный этой функцией, должен быть готовым шаблоном регистрации, который будет храниться в базе данных при вызове EngineAdapterCommitEnrollment . Не следует хэшировать один из промежуточных захваченных примеров.
Для создания хэша шаблона используется алгоритм, выбранный последним вызовом в этом конвейере в EngineAdapterSetHashAlgorithm.
Память, содержащая хэш, принадлежит адаптеру подсистемы и управляется ими после успешного возврата функции EngineAdapterGetEnrollmentHash . Адаптер подсистемы должен поддерживать допустимый адрес буфера до тех пор, пока платформа не вызовет любую из следующих функций:
Адаптер подсистемы также должен поддерживать отдельный хэш-буфер для каждого конвейера.Примеры
В следующем псевдокоде показана одна из возможных реализаций этой функции. Пример не компилируется. Вы должны адаптировать его в соответствии с вашей целью.
//////////////////////////////////////////////////////////////////////////////////////////
//
// 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;
}
Требования
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | winbio_adapter.h (включая Winbio_adapter.h) |