PIBIO_STORAGE_ATTACH_FN Rückruffunktion (winbio_adapter.h)

Wird vom Windows Biometric Framework aufgerufen, wenn der Verarbeitungspipeline der biometrischen Einheit ein Speicheradapter hinzugefügt wird. Der Zweck dieser Funktion besteht darin, jede Initialisierung durchzuführen, die für spätere biometrische Vorgänge erforderlich ist.

Syntax

PIBIO_STORAGE_ATTACH_FN PibioStorageAttachFn;

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

Parameter

[in, out] Pipeline

Zeiger auf eine WINBIO_PIPELINE Struktur, die der biometrischen Einheit zugeordnet ist, die den Vorgang ausführt.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt sie S_OK zurück. Wenn die Funktion fehlschlägt, muss sie einen der folgenden HRESULT-Werte zurückgeben, um den Fehler anzugeben.

Rückgabecode Beschreibung
E_POINTER
Das Pipelineargument darf nicht NULL sein.
E_OUTOFMEMORY
Der Vorgang konnte aufgrund von unzureichendem Arbeitsspeicher nicht abgeschlossen werden.
WINBIO_E_INVALID_DEVICE_STATE
Das StorageContext-Element der WINBIO_PIPELINE Struktur, auf die das Pipelineargument verweist, ist nicht NULL , oder das StorageHandle-Element ist nicht auf INVALID_HANDLE_VALUE festgelegt.

Hinweise

Wenn Sie diese Funktion implementieren, müssen Sie alle vom Adapter benötigten Ressourcen zuordnen und verwalten und diese an die Pipeline für biometrische Einheiten anfügen. Weisen Sie hierzu eine private WINIBIO_STORAGE_CONTEXT-Struktur auf dem Heap zu, initialisieren Sie sie, und legen Sie ihre Adresse im StorageContext-Member des Pipelineobjekts fest.

Wenn das Feld StorageContext nicht NULL ist, wenn diese Funktion aufgerufen wird, wurde die Pipeline durch einen vorherigen Aufruf von StorageAdapterDetach nicht ordnungsgemäß zurückgesetzt, und Sie müssen WINBIO_E_INVALID_DEVICE_STATE zurückgeben, um das Windows Biometric Framework über das Problem zu benachrichtigen.

Wenn das Feld StorageHandle beim Aufruf dieser Funktion keine INVALID_HANDLE_VALUE enthält, müssen Sie WINBIO_E_INVALID_DEVICE_STATE zurückgeben.

Wenn beim Erstellen und Initialisieren von Speicheradapterressourcen, die von dieser Funktion verwendet werden, ein Fehler auftritt, müssen Sie vor der Rückgabe alle erforderlichen Bereinigungen durchführen.

Beispiele

Der folgende Pseudocode zeigt eine mögliche Implementierung dieser Funktion. Das Beispiel wird nicht kompiliert. Sie müssen es an Ihren Zweck anpassen.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winbio_adapter.h (einschließlich Winbio_adapter.h)

Weitere Informationen

Plug-In-Funktionen

StorageAdapterDetach