Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вызывается биометрической платформой Windows непосредственно перед удалением адаптера подсистемы из конвейера обработки биометрической единицы. Эта функция предназначена для освобождения определенных ресурсов адаптера, подключенных к конвейеру.
Синтаксис
PIBIO_ENGINE_DETACH_FN PibioEngineDetachFn;
HRESULT PibioEngineDetachFn(
[in, out] PWINBIO_PIPELINE Pipeline
)
{...}
Параметры
[in, out] Pipeline
Указатель на структуру WINBIO_PIPELINE , связанную с биометрической единицей, выполняющей операцию.
Возвращаемое значение
Если функция выполняется успешно, она возвращает S_OK. Если функция завершается сбоем, она должна вернуть одно из следующих значений HRESULT , чтобы указать на ошибку.
| Код возврата | Описание |
|---|---|
|
Параметр Pipeline не может иметь значение NULL. |
|
Поле EngineContext структуры WINBIO_PIPELINE не может иметь значение NULL. |
Комментарии
Чтобы предотвратить утечку памяти, реализация функции EngineAdapterDetach должна освободить частную структуру WINBIO_ENGINE_CONTEXT , на которую указывает элемент EngineContext конвейера, а также любые другие ресурсы, подключенные к контексту подсистемы.
Если поле EngineContext в объекте конвейера имеет значение NULL при вызове этой функции, конвейер не был инициализирован должным образом и необходимо вернуть WINBIO_E_INVALID_DEVICE_STATE , чтобы уведомить Биометрическую платформу Windows о проблеме.
Перед возвращением S_OK функция EngineAdapterDetach должна задать для поля EngineContext структуры WINBIO_PIPELINEзначение NULL , а для поля EngineHandle— значение INVALID_HANDLE_VALUE.
Эта функция вызывается после удаления адаптера хранилища из конвейера. Поэтому эта функция не должна вызывать функции, на которые ссылается структура WINBIO_STORAGE_INTERFACE , на которую указывает элемент StorageInterface объекта конвейера.
Примеры
В следующем псевдокоде показана одна из возможных реализаций этой функции. Пример не компилируется. Вы должны адаптировать его в соответствии с вашей целью.
//////////////////////////////////////////////////////////////////////////////////////////
//
// EngineAdapterDetach
//
// Purpose:
// Releases adapter specific resources attached to the pipeline.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated with
// the biometric unit.
//
static HRESULT
WINAPI
EngineAdapterDetach(
__inout PWINBIO_PIPELINE Pipeline
)
{
PWINBIO_ENGINE_CONTEXT context = NULL;
// Verify that the Pipeline parameter is not NULL.
if (!ARGUMENT_PRESENT(Pipeline))
{
hr = E_POINTER;
goto cleanup;
}
// Retrieve the context from the pipeline and assign it to a local
// variable.
context = (PWINBIO_ENGINE_CONTEXT)Pipeline->EngineContext;
if (context == NULL)
{
goto cleanup;
}
// Set the context on the pipeline to NULL.
Pipeline->EngineContext = NULL;
// If your adapter supports software-based template hashing and you
// opened a Cryptography Next Generation (CNG) hash object handle
// during initialization, implement the following custom function to
// release the CNG resources.
_AdapterCleanupCrypto(context);
// Implement one or more custom routines to release any structures
// that remain attached to the context block. These structures can
// include the most recent feature set, the current enrollment template,
// and other custom defined objects.
if (context->FeatureSet != NULL)
{
_AdapterRelease(context->FeatureSet);
context->FeatureSet = NULL;
context->FeatureSetSize = 0;
}
if (context->Enrollment.Template != NULL)
{
_AdapterRelease(context->Enrollment.Template);
context->Enrollment.Template = NULL;
context->Enrollment.TemplateSize = 0;
context->Enrollment.SampleCount = 0;
}
if (context->SomePointerField != NULL)
{
_AdapterRelease(context->SomePointerField);
context->SomePointerField = NULL;
}
// Release the context block.
_AdapterRelease(context);
cleanup:
return S_OK;
}
Требования
| Требование | Значение |
|---|---|
| Минимальная версия клиента | Windows 7 [только классические приложения] |
| Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
| Целевая платформа | Windows |
| Header | winbio_adapter.h (включая Winbio_adapter.h) |