Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wird vom Windows Biometric Framework aufgerufen, unmittelbar bevor ein Engine-Adapter aus der Verarbeitungspipeline der biometrischen Einheit entfernt wird. Der Zweck dieser Funktion besteht darin, adapterspezifische Ressourcen freizugeben, die an die Pipeline angefügt sind.
Syntax
PIBIO_ENGINE_DETACH_FN PibioEngineDetachFn;
HRESULT PibioEngineDetachFn(
[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, wird S_OK zurückgegeben. Wenn die Funktion fehlschlägt, muss sie einen der folgenden HRESULT-Werte zurückgeben, um den Fehler anzugeben.
Rückgabecode | Beschreibung |
---|---|
|
Der Pipelineparameter darf nicht NULL sein. |
|
Das EngineContext-Feld der WINBIO_PIPELINE-Struktur darf nicht NULL sein. |
Hinweise
Um Speicherverluste zu verhindern, muss Ihre Implementierung der EngineAdapterDetach-Funktion die private WINBIO_ENGINE_CONTEXT Struktur freigeben, auf die das EngineContext-Element der Pipeline verweist, zusammen mit allen anderen Ressourcen, die dem Engine-Kontext zugeordnet sind.
Wenn das Feld EngineContext im Pipelineobjekt null ist, wenn diese Funktion aufgerufen wird, wurde die Pipeline nicht ordnungsgemäß initialisiert, und Sie müssen WINBIO_E_INVALID_DEVICE_STATE zurückgeben, um das Windows Biometric Framework über das Problem zu benachrichtigen.
Bevor S_OK zurückgegeben wird, muss die EngineAdapterDetach-Funktion das EngineContext-Feld der WINBIO_PIPELINE-Struktur auf NULL und das EngineHandle-Feld auf INVALID_HANDLE_VALUE festlegen.
Diese Funktion wird aufgerufen, nachdem der Speicheradapter aus der Pipeline entfernt wurde. Daher darf diese Funktion keine Funktionen aufrufen, auf die von der WINBIO_STORAGE_INTERFACE-Struktur verwiesen wird, auf die der StorageInterface-Member des Pipelineobjekts verweist.
Beispiele
Der folgende Pseudocode zeigt eine mögliche Implementierung dieser Funktion. Das Beispiel wird nicht kompiliert. Sie müssen es an Ihren Zweck anpassen.
//////////////////////////////////////////////////////////////////////////////////////////
//
// EngineAdapterDetach
//
// Purpose:
// Releases adapter specific resources attached to the pipeline.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated with
// the biometric unit.
//
static HRESULT
WINAPI
EngineAdapterDetach(
__inout PWINBIO_PIPELINE Pipeline
)
{
PWINBIO_ENGINE_CONTEXT context = NULL;
// Verify that the Pipeline parameter is not NULL.
if (!ARGUMENT_PRESENT(Pipeline))
{
hr = E_POINTER;
goto cleanup;
}
// Retrieve the context from the pipeline and assign it to a local
// variable.
context = (PWINBIO_ENGINE_CONTEXT)Pipeline->EngineContext;
if (context == NULL)
{
goto cleanup;
}
// Set the context on the pipeline to NULL.
Pipeline->EngineContext = NULL;
// If your adapter supports software-based template hashing and you
// opened a Cryptography Next Generation (CNG) hash object handle
// during initialization, implement the following custom function to
// release the CNG resources.
_AdapterCleanupCrypto(context);
// Implement one or more custom routines to release any structures
// that remain attached to the context block. These structures can
// include the most recent feature set, the current enrollment template,
// and other custom defined objects.
if (context->FeatureSet != NULL)
{
_AdapterRelease(context->FeatureSet);
context->FeatureSet = NULL;
context->FeatureSetSize = 0;
}
if (context->Enrollment.Template != NULL)
{
_AdapterRelease(context->Enrollment.Template);
context->Enrollment.Template = NULL;
context->Enrollment.TemplateSize = 0;
context->Enrollment.SampleCount = 0;
}
if (context->SomePointerField != NULL)
{
_AdapterRelease(context->SomePointerField);
context->SomePointerField = NULL;
}
// Release the context block.
_AdapterRelease(context);
cleanup:
return S_OK;
}
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 (Winbio_adapter.h einschließen) |