PIBIO_STORAGE_ATTACH_FN fonction de rappel (winbio_adapter.h)
Appelé par l’infrastructure biométrique Windows lorsqu’un adaptateur de stockage est ajouté au pipeline de traitement de l’unité biométrique. L’objectif de cette fonction est d’effectuer toute initialisation requise pour les opérations biométriques ultérieures.
Syntaxe
PIBIO_STORAGE_ATTACH_FN PibioStorageAttachFn;
HRESULT PibioStorageAttachFn(
[in, out] PWINBIO_PIPELINE Pipeline
)
{...}
Paramètres
[in, out] Pipeline
Pointeur vers une structure WINBIO_PIPELINE associée à l’unité biométrique effectuant l’opération.
Valeur retournée
Si la fonction réussit, elle retourne S_OK. Si la fonction échoue, elle doit retourner l’une des valeurs HRESULT suivantes pour indiquer l’erreur.
Code de retour | Description |
---|---|
|
L’argument Pipeline ne peut pas être NULL. |
|
L’opération n’a pas pu être effectuée en raison d’une mémoire insuffisante. |
|
Le membre StorageContext de la structure WINBIO_PIPELINE pointée par l’argument Pipeline n’est pas NULL ou le membre StorageHandle n’est pas défini sur INVALID_HANDLE_VALUE. |
Remarques
Lorsque vous implémentez cette fonction, vous devez allouer et gérer toutes les ressources requises par l’adaptateur et les attacher au pipeline d’unités biométriques. Pour ce faire, allouez une structure de WINIBIO_STORAGE_CONTEXT privée sur le tas, initialisez-la et définissez son adresse dans le membre StorageContext de l’objet pipeline.
Si le champ StorageContext n’est pas NULL lorsque cette fonction est appelée, le pipeline n’a pas été correctement réinitialisé par un appel précédent à StorageAdapterDetach et vous devez retourner WINBIO_E_INVALID_DEVICE_STATE pour informer l’infrastructure biométrique Windows du problème.
De même, si le champ StorageHandle ne contient pas de INVALID_HANDLE_VALUE lorsque cette fonction est appelée, vous devez retourner WINBIO_E_INVALID_DEVICE_STATE.
En cas d’erreur lors de la création et de l’initialisation des ressources d’adaptateur de stockage utilisées par cette fonction, vous devez effectuer tout nettoyage requis avant de revenir.
Exemples
Le pseudo-code suivant montre une implémentation possible de cette fonction. L’exemple ne se compile pas. Vous devez l’adapter à votre objectif.
/////////////////////////////////////////////////////////////////////////////////////////
//
// StorageAdapterAttach
//
// Purpose:
// Performs any initialization required for later biometric operations.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated with
// the biometric unit performing the operation.
//
static HRESULT
WINAPI
StorageAdapterAttach(
__inout PWINBIO_PIPELINE Pipeline
)
{
HRESULT hr = S_OK;
PWINBIO_STORAGE_CONTEXT newContext = NULL;
// Verify that the Pipeline parameter is not NULL.
if (!ARGUMENT_PRESENT(Pipeline))
{
hr = E_POINTER;
goto cleanup;
}
if (Pipeline->StorageContext != NULL ||
Pipeline->StorageHandle != INVALID_HANDLE_VALUE)
{
// The pipeline state is not valid. This function should never
// be called if the pipeline already contains a storage context
// or a valid storage handle.
hr = WINBIO_E_INVALID_DEVICE_STATE;
goto cleanup;
}
// Call a custom function (_AdapterAlloc) to allocate memory to hold the
// sensor adapter context.
newContext = (PWINBIO_STORAGE_CONTEXT)_AdapterAlloc(sizeof(WINBIO_STORAGE_CONTEXT));
if (newContext == NULL)
{
hr = E_OUTOFMEMORY;
goto cleanup;
}
// Call a custom function to initialize the result set to be used by the next
// query operation. Initialization typically requires that you clear the result set
// of any previous query, mark the set as empty, and place the result set cursor
// in a known state.
// The result set is attached to the storage context so that it can persist from
// one storage adapter call to the next.
hr = _ResultSetInitialize(&newContext->ResultSet);
if (FAILED(hr))
{
goto cleanup;
}
// TODO: Initialize any other required context fields (not shown).
// If initialization completes successfully, attach the context to the
// processing pipeline of the biometric unit.
Pipeline->StorageContext = newContext;
newContext = NULL;
cleanup:
if (FAILED(hr) && newContext != NULL)
{
_ResultSetCleanup(&newContext->ResultSet);
_AdapterRelease( newContext );
newContext = NULL;
}
return hr;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winbio_adapter.h (include Winbio_adapter.h) |