PIBIO_STORAGE_CLOSE_DATABASE_FN funzione di callback (winbio_adapter.h)
Chiamato da Windows Biometric Framework per chiudere il database associato alla pipeline e liberare tutte le risorse correlate.
Sintassi
PIBIO_STORAGE_CLOSE_DATABASE_FN PibioStorageCloseDatabaseFn;
HRESULT PibioStorageCloseDatabaseFn(
[in, out] PWINBIO_PIPELINE Pipeline
)
{...}
Parametri
[in, out] Pipeline
Puntatore a una struttura WINBIO_PIPELINE associata all'unità biometrica che esegue l'operazione.
Valore restituito
Se la funzione ha esito positivo, restituisce S_OK. Se la funzione ha esito negativo, deve restituire uno dei valori HRESULT seguenti per indicare l'errore.
Codice restituito | Descrizione |
---|---|
|
L'argomento Pipeline non può essere NULL. |
|
Un problema non specificato ha causato l'esito negativo della richiesta. |
Commenti
Windows Biometric Framework non richiede criteri di memorizzazione nella cache, ma se il database gestisce una cache in memoria di record, questa funzione deve scaricare record non scritti nell'archiviazione.
Questa funzione deve invalidare tutti i set di risultati generati dalle operazioni di query del database precedenti.
Esempio
Lo pseudocode seguente mostra una possibile implementazione di questa funzione. L'esempio non viene compilato. Devi adattarla per adattarti al tuo scopo.
/////////////////////////////////////////////////////////////////////////////////////////
//
// StorageAdapterCloseDatabase
//
// Purpose:
// Close the database associated with the pipeline and free all
// related resources.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated with
// the biometric unit performing the operation.
//
static HRESULT
WINAPI
StorageAdapterCloseDatabase(
__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 ||
Pipeline->StorageHandle == INVALID_HANDLE_VALUE)
{
hr = WINBIO_E_INVALID_DEVICE_STATE;
goto cleanup;
}
// Remove any data structures attached to the context and remove the
// context from the pipeline.
_CleanupCryptoContext(&storageContext->CryptoContext);
StorageAdapterClearContext(Pipeline);
// Close the database file handle.
CloseHandle( Pipeline->StorageHandle );
Pipeline->StorageHandle = INVALID_HANDLE_VALUE;
// Call a custom function (_PurgeDeletedRecords) to remove deleted records
// from the database file.
_PurgeDeletedRecords(
&storageContext->DatabaseId,
(LPCWSTR)&storageContext->FilePath
);
// Overwrite the database ID and path.
SecureZeroMemory(&storageContext->DatabaseId, sizeof(WINBIO_UUID));
SecureZeroMemory(storageContext->FilePath, (MAX_PATH+1)*sizeof(WCHAR));
cleanup:
return hr;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winbio_adapter.h (includere Winbio_adapter.h) |