Я пытался создать плагин FireBreath, который фиксирует отпечатки пальцев со сканером. Этот код работает отлично, как только консольное приложение (минус boost threading).Как захватить отпечаток пальца с помощью биометрической рамки Windows в Firebreath
bool GopripFPrintAPI::winCaptureFPrint(const FB::JSObjectPtr& callback)
{
boost::thread t(boost::bind(&GopripFPrintAPI::WBFCapture_thread, this, callback));
return true;
}
int GopripFPrintAPI::WBFCapture_thread(const FB::JSObjectPtr& callback)
{
unsigned long resultHandle = S_OK;
WINBIO_SESSION_HANDLE sessionHandle = NULL;
WINBIO_UNIT_ID unitId = 0;
WINBIO_REJECT_DETAIL rejectDetail = 0;
PWINBIO_BIR sample = NULL;
SIZE_T sampleSize = 0;
// Connect to the system pool.
resultHandle = WinBioOpenSession(
WINBIO_TYPE_FINGERPRINT, // Service provider
WINBIO_POOL_SYSTEM, // Pool type
WINBIO_FLAG_RAW, // Access: Capture raw data
NULL, // Array of biometric unit IDs
0, // Count of biometric unit IDs
WINBIO_DB_DEFAULT, // Default database
&sessionHandle // [out] Session handle
);
// Capture a biometric sample.
wprintf_s(L"\n Calling WinBioCaptureSample - Swipe sensor...\n");
resultHandle = WinBioCaptureSample(
sessionHandle,
WINBIO_NO_PURPOSE_AVAILABLE,
WINBIO_DATA_FLAG_RAW,
&unitId,
&sample,
&sampleSize,
&rejectDetail
);
...
}
вызова winCaptureFPrint() правильно запускает WBFCapture_thread() и прекращает ожидание в WinBioCaptureSample(), но с использованием сканеров отпечатков пальцев делает метод ничего winBioCaptureSample() не похоже, чтобы получить сигнал от сканера. Я думал, что это, вероятно, проблема с фокусом, поэтому я пробовал
resultHandle = WinBioAcquireFocus()
Но это всегда терпит неудачу. Он дает отказ в доступе общего доступа с ошибкой E_ACCESSDENIED. Есть ли что-то в FireBreath в фокусе, что я не знаю, или я делаю что-то еще неправильно?
Вы решили, что вы isuue? У меня такая же проблема ^^. –
Нет. Мне пришлось отказаться от firebreath, так как я не мог заставить его работать с WBF или neurotechnologys Verifinger SDK. – Burvix