PIBIO_SENSOR_DETACH_FN fungsi panggilan balik (winbio_adapter.h)
Dipanggil oleh Windows Biometric Framework segera sebelum adaptor sensor dihapus dari alur pemrosesan unit biometrik. Tujuan dari fungsi ini adalah untuk merilis sumber daya khusus adaptor yang terpasang pada alur.
Sintaks
PIBIO_SENSOR_DETACH_FN PibioSensorDetachFn;
HRESULT PibioSensorDetachFn(
[in, out] PWINBIO_PIPELINE Pipeline
)
{...}
Parameter
[in, out] Pipeline
Arahkan 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 |
---|---|
|
Parameter Alur tidak boleh NULL. |
|
Bidang SensorContext dari struktur WINBIO_PIPELINE tidak boleh NULL. |
Keterangan
Untuk mencegah kebocoran memori, implementasi fungsi SensorAdapterDetach Anda harus melepaskan struktur WINBIO_SENSOR_CONTEXT privat yang ditunjukkan oleh anggota SensorContext dari alur bersama dengan sumber daya lain yang melekat pada konteks sensor.
Jika bidang SensorContext di objek alur 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 ini harus mengatur bidang SensorContext dari struktur WINBIO_PIPELINE ke NULL.
Karena fungsi ini dipanggil setelah adaptor penyimpanan dan mesin dihapus dari alur, implementasi fungsi ini tidak boleh memanggil fungsi apa pun yang direferensikan oleh struktur WINBIO_ENGINE_INTERFACE atau WINBIO_STORAGE_INTERFACE yang diacu oleh anggota EngineInterface dan StorageInterface dari objek alur.
Karena anggota SensorHandle dari struktur WINBIO_PIPELINE akan berisi handel yang valid bahkan setelah SensorAdapterDetach dipanggil, Anda dapat menggunakan handel untuk mengakses perangkat sensor jika perlu. Fungsi ini tidak boleh menutup handel sensor. Windows biometric Framework akan melakukannya setelah SensorAdapterDetach kembali.
Contoh
Pseudocode berikut menunjukkan satu kemungkinan implementasi fungsi ini. Contoh tidak dikompilasi. Anda harus menyesuaikannya agar sesuai dengan tujuan Anda.
//////////////////////////////////////////////////////////////////////////////////////////
//
// SensorAdapterDetach
//
// Purpose:
// Cancels all pending sensor operations.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated with
// the biometric unit.
//
static HRESULT
WINAPI
SensorAdapterDetach(
__inout PWINBIO_PIPELINE Pipeline
)
{
PWINBIO_SENSOR_CONTEXT sensorContext = NULL;
// Verify that the Pipeline parameter is not NULL.
if (!ARGUMENT_PRESENT(Pipeline))
{
hr = E_POINTER;
goto cleanup;
}
// Validate the current state of the sensor.
if (Pipeline->SensorContext == NULL)
{
return WINBIO_E_INVALID_DEVICE_STATE;
}
// Cancel any pending I/O to the device.
SensorAdapterCancel(Pipeline);
// Take ownership of the sensor context from the pipeline.
sensorContext = (PWINBIO_SENSOR_CONTEXT)Pipeline->SensorContext;
Pipeline->SensorContext = NULL;
// Release any structures that remain attached to the context block.
// The following example assumes that your sensor adapter context
// contains pointers to a capture buffer and an attributes buffer.
if (sensorContext->CaptureBuffer != NULL)
{
// Zero the capture buffer.
SecureZeroMemory(
sensorContext->CaptureBuffer,
sensorContext->CaptureBufferSize);
// Release the capture buffer.
_AdapterRelease(sensorContext->CaptureBuffer);
sensorContext->CaptureBuffer = NULL;
sensorContext->CaptureBufferSize = 0;
}
if (sensorContext->AttributesBuffer != NULL)
{
// Zero the attributes buffer.
SecureZeroMemory(
sensorContext->AttributesBuffer,
sensorContext->AttributesBufferSize);
// Release the attributes buffer.
_AdapterRelease(sensorContext->AttributesBuffer);
sensorContext->AttributesBuffer = NULL;
sensorContext->AttributesBufferSize = 0;
}
// Close the overlapped I/O event handle.
CloseHandle(sensorContext->Overlapped.hEvent);
// Release the context structure.
_AdapterRelease(sensorContext);
sensorContext = NULL;
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) |