Bagikan melalui


fungsi panggilan balik PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN (winbio_adapter.h)

Dipanggil oleh Windows Biometric Framework untuk mengambil salinan kumpulan fitur atau templat yang terakhir diproses dari mesin yang diformat sebagai struktur WINBIO_BIR standar.

Sintaks

PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN PibioEngineExportEngineDataFn;

HRESULT PibioEngineExportEngineDataFn(
  [in, out] PWINBIO_PIPELINE Pipeline,
  [in]      WINBIO_BIR_DATA_FLAGS Flags,
  [out]     PWINBIO_BIR *SampleBuffer,
  [out]     PSIZE_T SampleSize
)
{...}

Parameter

[in, out] Pipeline

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

[in] Flags

Nilai yang menentukan properti struktur WINBIO_BIR yang dikembalikan oleh mesin. Ini bisa menjadi bitwise ATAU dari bendera tingkat keamanan dan pemrosesan berikut:

WINBIO_DATA_FLAG_PRIVACY

Data dienkripsi.

  • WINBIO_DATA_FLAG_INTEGRITY Data ditandatangani secara digital atau dilindungi oleh kode autentikasi pesan (MAC).

  • WINBIO_DATA_FLAG_SIGNED Jika bendera ini dan bendera WINBIO_DATA_FLAG_INTEGRITY diatur, data akan ditandatangani. Jika bendera ini tidak diatur tetapi bendera WINBIO_DATA_FLAG_INTEGRITY diatur, MAC dihitung.

  • WINBIO_DATA_FLAG_RAW Data dalam format yang diambil.

  • WINBIO_DATA_FLAG_INTERMEDIATE Data tidak mentah tetapi belum sepenuhnya diproses.

  • WINBIO_DATA_FLAG_PROCESSED Data telah diproses.

[out] SampleBuffer

Alamat variabel yang menerima penunjuk ke struktur WINBIO_BIR yang berisi kumpulan fitur atau templat.

[out] SampleSize

Penunjuk ke variabel yang berisi ukuran, dalam byte, dari struktur WINBIO_BIR yang dikembalikan dalam parameter SampleBuffer .

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_INVALIDARG
Adaptor mesin tidak mendukung kombinasi bendera yang ditentukan oleh parameter Bendera .
E_OUTOFMEMORY
Tidak tersedia cukup memori untuk membuat struktur WINBIO_BIR .
E_POINTER
Parameter pointer wajib adalah NULL.
WINBIO_E_INVALID_DEVICE_STATE
Alur tidak berisi jenis data yang diperlukan oleh parameter Bendera .
E_NOTIMPL
Metode ini saat ini tidak diterapkan.

Keterangan

Anda harus mengalokasikan buffer untuk dikembalikan dalam parameter SampleBuffer dari tumpukan proses dengan menggunakan fungsi HeapAlloc . Setelah buffer dibuat, buffer menjadi properti Dari Windows Biometric Framework. Karena Framework membatalkan alokasi memori ini setelah selesai menggunakannya, implementasi fungsi ini tidak boleh mencoba membatalkan alokasi buffer atau menyimpan pointer ke dalamnya. Dengan tidak menyimpan pointer, Anda mencegah bagian lain dari adaptor mesin mencoba menggunakan buffer setelah fungsi ini kembali.

Contoh

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

//////////////////////////////////////////////////////////////////////////////////////////
//
// EngineAdapterExportEngineData
//
// Purpose:
//      Retrieves a copy of the most recently processed feature set or template.
//
// Parameters:
//      Pipeline        - Pointer to a WINBIO_PIPELINE structure associated 
//                        with the biometric unit performing the operation
//      Flags           - Security and processing level flags
//      SampleBuffer    - Contains the feature set or template
//      SampleSize      - Size, in bytes, of the structure returned in the 
//                        SampleBuffer parameter.
//
static HRESULT
WINAPI
EngineAdapterExportEngineData(
    __inout PWINBIO_PIPELINE Pipeline,
    __in WINBIO_BIR_DATA_FLAGS Flags,
    __out PWINBIO_BIR *SampleBuffer,
    __out PSIZE_T SampleSize
    )
{
    HRESULT hr = S_OK;
    PWINBIO_BIR birAddress = NULL;
    SIZE_T birSize = 0;

    // Verify that pointer arguments are not NULL.
    if (!ARGUMENT_PRESENT(Pipeline) ||
        !ARGUMENT_PRESENT(SampleBuffer) ||
        !ARGUMENT_PRESENT(SampleSize))
    {
        hr = E_POINTER;
        goto cleanup;
    }

    // Retrieve the context from the pipeline.
    PWINBIO_ENGINE_CONTEXT context = 
           (PWINBIO_ENGINE_CONTEXT)Pipeline->EngineContext;

    // At least one processing level flag must be set. Your adapter can also
    // place additional restrictions on supported export formats.
    if (Flags & (WINBIO_DATA_FLAG_RAW | 
                 WINBIO_DATA_FLAG_INTERMEDIATE | 
                 WINBIO_DATA_FLAG_PROCESSED) == 0)
    {
        hr = E_INVALIDARG;
        goto cleanup;
    }

    // You must implement the _CreateBirFromAdapterData function to extract
    // data from the engine context and create a new WINBIO_BIR structure. The
    // function passes ownership of the new biometric information record (BIR)
    // to the EngineAdapterExportEngineData routine which then passes the BIR
    // to the caller.
    hr = _CreateBirFromAdapterData( context, Flags, &birAddress, &birSize);
    if (SUCCEEDED(hr))
    {
        *SampleBuffer = birAddress;
        *SampleSize = birSize;
    }

cleanup:

    return hr;
}

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

EngineAdapterAcceptSampleData

Fungsi Plug-in