PIBIO_STORAGE_DETACH_FN función de devolución de llamada (winbio_adapter.h)

Lo llama Windows Biometric Framework inmediatamente antes de quitar un adaptador de almacenamiento de la canalización de procesamiento de la unidad biométrica. El propósito de esta función es liberar recursos específicos del adaptador conectados a la canalización.

Sintaxis

PIBIO_STORAGE_DETACH_FN PibioStorageDetachFn;

HRESULT PibioStorageDetachFn(
  [in, out] PWINBIO_PIPELINE Pipeline
)
{...}

Parámetros

[in, out] Pipeline

Puntero a una estructura de WINBIO_PIPELINE asociada a la unidad biométrica que realiza la operación.

Valor devuelto

Si la función se realiza correctamente, devuelve S_OK. Si se produce un error en la función, debe devolver uno de los siguientes valores HRESULT para indicar el error.

Código devuelto Descripción
E_POINTER
El parámetro Pipeline no puede ser NULL.
WINBIO_E_INVALID_DEVICE_STATE
El campo StorageContext de la estructura WINBIO_PIPELINE no puede ser NULL.

Comentarios

Para evitar pérdidas de memoria, la implementación de la función StorageAdapterDetach debe liberar la estructura de WINBIO_STORAGE_CONTEXT privada a la que apunta el miembro StorageContext de la canalización junto con cualquier otro recurso asociado al contexto de almacenamiento.

Si el campo StorageContext del objeto de canalización es NULL cuando se llama a esta función, la canalización no se inicializó correctamente y debe devolver WINBIO_E_INVALID_DEVICE_STATE para notificar al marco biométrico de Windows el problema.

Antes de devolver S_OK, esta función debe establecer el campo StorageContext de la estructura de WINBIO_PIPELINE en NULL y el campo StorageHandle en INVALID_HANDLE_VALUE.

Ejemplos

El pseudocódigo siguiente muestra una posible implementación de esta función. El ejemplo no se compila. Debes adaptarlo para adaptarlo a tu propósito.

/////////////////////////////////////////////////////////////////////////////////////////
//
// 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;
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbio_adapter.h (incluya Winbio_adapter.h)

Consulte también

Funciones de complemento

StorageAdapterAttach