Bagikan melalui


PIBIO_ENGINE_DETACH_FN fungsi panggilan balik (winbio_adapter.h)

Dipanggil oleh Windows Biometric Framework segera sebelum adaptor mesin dihapus dari alur pemrosesan unit biometrik. Tujuan dari fungsi ini adalah untuk merilis sumber daya spesifik adaptor yang melekat pada alur.

Sintaks

PIBIO_ENGINE_DETACH_FN PibioEngineDetachFn;

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

Parameter

[in, out] Pipeline

Penunjuk ke struktur WINBIO_PIPELINE yang terkait dengan unit biometrik yang melakukan operasi.

Mengembalikan nilai

Jika fungsi berhasil, fungsi akan mengembalikan S_OK. Jika fungsi gagal, fungsi harus mengembalikan salah satu nilai HRESULT berikut untuk menunjukkan kesalahan.

Menampilkan kode Deskripsi
E_POINTER
Parameter Alur tidak boleh NULL.
WINBIO_E_INVALID_DEVICE_STATE
Bidang EngineContext dari struktur WINBIO_PIPELINE tidak boleh NULL.

Keterangan

Untuk mencegah kebocoran memori, implementasi fungsi EngineAdapterDetach Anda harus merilis struktur WINBIO_ENGINE_CONTEXT privat yang ditunjukkan oleh anggota EngineContext dari alur bersama dengan sumber daya lain yang melekat pada konteks mesin.

Jika bidang EngineContext di objek alur adalah NULL ketika fungsi ini dipanggil, alur tidak diinisialisasi dengan benar dan Anda harus mengembalikan WINBIO_E_INVALID_DEVICE_STATE untuk memberi tahu Windows Biometric Framework tentang masalah tersebut.

Sebelum mengembalikan S_OK, fungsi EngineAdapterDetach harus mengatur bidang EngineContext dari struktur WINBIO_PIPELINE ke NULL dan bidang EngineHandle ke INVALID_HANDLE_VALUE.

Fungsi ini dipanggil setelah adaptor penyimpanan dihapus dari alur. Oleh karena itu, fungsi ini tidak boleh memanggil fungsi apa pun yang direferensikan oleh struktur WINBIO_STORAGE_INTERFACE yang diacu oleh anggota StorageInterface dari objek alur.

Contoh

Pseudocode berikut menunjukkan salah satu kemungkinan implementasi fungsi ini. Contoh tidak dikompilasi. Kau harus menyesuaikannya sesuai dengan tujuanmu.

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Target Platform Windows
Header winbio_adapter.h (termasuk Winbio_adapter.h)

Lihat juga

EngineAdapterAttach

Fungsi Plug-in

SensorAdapterDetach