функция обратного вызова PIBIO_STORAGE_DETACH_FN (winbio_adapter.h)
Вызывается биометрической платформой Windows непосредственно перед удалением адаптера хранилища из конвейера обработки биометрической единицы. Эта функция предназначена для освобождения определенных ресурсов адаптера, подключенных к конвейеру.
Синтаксис
PIBIO_STORAGE_DETACH_FN PibioStorageDetachFn;
HRESULT PibioStorageDetachFn(
[in, out] PWINBIO_PIPELINE Pipeline
)
{...}
Параметры
[in, out] Pipeline
Указатель на структуру WINBIO_PIPELINE , связанную с биометрической единицей, выполняющей операцию.
Возвращаемое значение
Если функция выполняется успешно, она возвращает S_OK. Если функция завершается сбоем, она должна вернуть одно из следующих значений HRESULT , чтобы указать на ошибку.
Код возврата | Описание |
---|---|
|
Параметр Pipeline не может иметь значение NULL. |
|
Поле StorageContext структуры WINBIO_PIPELINE не может иметь значение NULL. |
Комментарии
Чтобы предотвратить утечку памяти, реализация функции StorageAdapterDetach должна освободить частную структуру WINBIO_STORAGE_CONTEXT , на которую указывает элемент StorageContext конвейера, а также любые другие ресурсы, подключенные к контексту хранилища.
Если при вызове этой функции поле StorageContext в объекте конвейера имеет значение NULL , конвейер не был инициализирован должным образом и необходимо вернуть WINBIO_E_INVALID_DEVICE_STATE , чтобы уведомить Windows Биометрическую платформу о проблеме.
Перед возвратом S_OK эта функция должна задать для поля StorageContext структуры WINBIO_PIPELINEзначение NULL , а для поля StorageHandle— значение INVALID_HANDLE_VALUE.
Примеры
В следующем псевдокоде показана одна из возможных реализаций этой функции. Пример не компилируется. Вы должны адаптировать его в соответствии с вашей целью.
/////////////////////////////////////////////////////////////////////////////////////////
//
// StorageAdapterDetach
//
// Purpose:
// Release adapter specific resources attached to the pipeline.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated with
// the biometric unit performing the operation.
//
static HRESULT
WINAPI
StorageAdapterDetach(
__inout PWINBIO_PIPELINE Pipeline
)
{
HRESULT hr = S_OK;
// Verify that the Pipeline parameter is not NULL.
if (!ARGUMENT_PRESENT(Pipeline))
{
hr = E_POINTER;
goto cleanup;
}
// Retrieve the context from the pipeline.
PWINBIO_STORAGE_CONTEXT storageContext =
(PWINBIO_STORAGE_CONTEXT)Pipeline->StorageContext;
// Verify the pipeline state.
if (storageContext == NULL)
{
// The pipeline state is not valid. This function should never
// be called if the storage context in the pipeline is already
// closed.
hr = WINBIO_E_INVALID_DEVICE_STATE;
goto cleanup;
}
// Release any structures attached to the context block.
StorageAdapterClearContext(Pipeline);
// Close the database.
StorageAdapterCloseDatabase(Pipeline);
// Remove the context from the pipeline.
Pipeline->StorageContext = NULL;
Pipeline->StorageHandle = INVALID_HANDLE_VALUE;
// Clear the result set. Depending on your implementation, this action
// can be performed by the StorageAdapterClearContext function called
// earlier.
ResultSetCleanup(&storageContext->ResultSet);
// Release the adapter context.
_AdapterRelease( storageContext );
storageContext = NULL;
cleanup:
return hr;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | winbio_adapter.h (включая Winbio_adapter.h) |