PWINBIO_CAPTURE_CALLBACK fungsi panggilan balik (winbio.h)
Dipanggil oleh Windows Biometric Framework untuk mengembalikan hasil dari fungsi WinBioCaptureSampleWithCallback asinkron. Aplikasi klien harus menerapkan fungsi ini.
- Terapkan fungsi PWINBIO_ASYNC_COMPLETION_CALLBACK untuk menerima pemberitahuan ketika operasi selesai.
- Panggil fungsi WinBioAsyncOpenSession . Berikan alamat panggilan balik Anda di parameter CallbackRoutine . Teruskan WINBIO_ASYNC_NOTIFY_CALLBACK di parameter NotificationMethod . Ambil handel sesi asinkron.
- Gunakan handel sesi asinkron untuk memanggil WinBioCaptureSample. Ketika operasi selesai, Windows Biometric Framework akan mengalokasikan dan menginisialisasi struktur WINBIO_ASYNC_RESULT dengan hasil dan memanggil panggilan balik Anda dengan penunjuk ke struktur hasil.
- Panggil WinBioFree dari implementasi panggilan balik Anda untuk merilis struktur WINBIO_ASYNC_RESULT setelah Anda selesai menggunakannya.
Sintaks
PWINBIO_CAPTURE_CALLBACK PwinbioCaptureCallback;
void PwinbioCaptureCallback(
[in, optional] PVOID CaptureCallbackContext,
[in] HRESULT OperationStatus,
[in] WINBIO_UNIT_ID UnitId,
[in] PWINBIO_BIR Sample,
[in] SIZE_T SampleSize,
[in] WINBIO_REJECT_DETAIL RejectDetail
)
{...}
Parameter
[in, optional] CaptureCallbackContext
Penunjuk ke buffer yang ditentukan oleh aplikasi dan diteruskan ke parameter CaptureCallbackContext dari fungsi WinBioCaptureSampleWithCallback . Buffer tidak dimodifikasi oleh kerangka kerja atau unit biometrik. Aplikasi Anda dapat menggunakan data untuk membantu menentukan tindakan apa yang harus dilakukan atau mempertahankan informasi tambahan tentang pengambilan biometrik.
[in] OperationStatus
Kode kesalahan yang dikembalikan oleh operasi penangkapan.
[in] UnitId
Nomor ID unit biometrik.
[in] Sample
Arahkan ke data sampel.
[in] SampleSize
Ukuran, dalam byte, dari data sampel yang ditujukkan oleh parameter Sampel .
[in] RejectDetail
Informasi tambahan tentang kegagalan, jika ada, untuk melakukan operasi. Untuk informasi selengkapnya, lihat Keterangan.
Mengembalikan nilai
Tidak ada
Keterangan
Saat ini, Windows Biometric Framework hanya mendukung pembaca sidik jari. Oleh karena itu, jika operasi gagal dan mengembalikan informasi tambahan dalam konstanta WINBIO_REJECT_DETAIL , itu akan menjadi salah satu nilai berikut:
- WINBIO_FP_TOO_HIGH
- WINBIO_FP_TOO_LOW
- WINBIO_FP_TOO_LEFT
- WINBIO_FP_TOO_RIGHT
- WINBIO_FP_TOO_FAST
- WINBIO_FP_TOO_SLOW
- WINBIO_FP_POOR_QUALITY
- WINBIO_FP_TOO_SKEWED
- WINBIO_FP_TOO_SHORT
- WINBIO_FP_MERGE_FAILURE
Contoh
Contoh kode berikut mengambil sampel secara asinkron dengan memanggil WinBioCaptureSampleWithCallback dan meneruskan pointer ke fungsi panggilan balik kustom, CaptureSampleCallback. Tautkan ke pustaka statis Winbio.lib dan sertakan file header berikut:
- Windows.h
- Stdio.h
- Conio.h
- Winbio.h
HRESULT CaptureSampleWithCallback(BOOL bCancel)
{
HRESULT hr = S_OK;
WINBIO_SESSION_HANDLE sessionHandle = NULL;
// Connect to the system pool.
hr = WinBioOpenSession(
WINBIO_TYPE_FINGERPRINT, // Service provider
WINBIO_POOL_SYSTEM, // Pool type
WINBIO_FLAG_RAW, // Raw access
NULL, // Array of biometric unit IDs
0, // Count of biometric unit IDs
WINBIO_DB_DEFAULT, // Default database
&sessionHandle // [out] Session handle
);
if (FAILED(hr))
{
wprintf_s(L"\n WinBioOpenSession failed. hr = 0x%x\n", hr);
goto e_Exit;
}
// Capture a biometric sample asynchronously.
wprintf_s(L"\n Calling WinBioCaptureSampleWithCallback ");
hr = WinBioCaptureSampleWithCallback(
sessionHandle, // Open session handle
WINBIO_NO_PURPOSE_AVAILABLE, // Intended use of the sample
WINBIO_DATA_FLAG_RAW, // Sample format
CaptureSampleCallback, // Callback function
NULL // Optional context
);
if (FAILED(hr))
{
wprintf_s(L"\n WinBioCaptureSampleWithCallback failed. ");
wprintf_s(L"hr = 0x%x\n", hr);
goto e_Exit;
}
wprintf_s(L"\n Swipe the sensor ...\n");
// Cancel the capture process if the bCancel flag is set.
if (bCancel)
{
wprintf_s(L"\n Starting CANCEL timer...");
Sleep( 7000 );
wprintf_s(L"\n Calling WinBioCancel\n");
hr = WinBioCancel( sessionHandle );
if (FAILED(hr))
{
wprintf_s(L"\n WinBioCancel failed. hr = 0x%x\n", hr);
goto e_Exit;
}
}
// Wait for the asynchronous capture process to complete
// or be canceled.
hr = WinBioWait( sessionHandle );
if (FAILED(hr))
{
wprintf_s(L"\n WinBioWait failed. hr = 0x%x\n", hr);
}
e_Exit:
if (sessionHandle != NULL)
{
WinBioCloseSession(sessionHandle);
sessionHandle = NULL;
}
wprintf_s(L"\n Press any key to exit...");
_getch();
return hr;
}
//------------------------------------------------------------------------
// The following function is the callback for WinBioCaptureSampleWithCallback.
// The function filters the response from the biometric subsystem and
// writes a result to the console window.
//
VOID CALLBACK CaptureSampleCallback(
__in_opt PVOID CaptureCallbackContext,
__in HRESULT OperationStatus,
__in WINBIO_UNIT_ID UnitId,
__in_bcount(SampleSize) PWINBIO_BIR Sample,
__in SIZE_T SampleSize,
__in WINBIO_REJECT_DETAIL RejectDetail
)
{
UNREFERENCED_PARAMETER(CaptureCallbackContext);
wprintf_s(L"\n CaptureSampleCallback executing");
wprintf_s(L"\n Swipe processed - Unit ID: %d", UnitId);
if (FAILED(OperationStatus))
{
if (OperationStatus == WINBIO_E_BAD_CAPTURE)
{
wprintf_s(L"\n Bad capture; reason: %d\n", RejectDetail);
}
else
{
wprintf_s(L"\n WinBioCaptureSampleWithCallback failed. ");
wprintf_s(L" OperationStatus = 0x%x\n", OperationStatus);
}
goto e_Exit;
}
wprintf_s(L"\n Captured %d bytes.\n", SampleSize);
e_Exit:
if (Sample != NULL)
{
WinBioFree(Sample);
Sample = NULL;
}
}
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.h |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk