2 votes

Comment capturer une empreinte digitale avec Windows Biometric Framework dans Firebreath ?

J'ai essayé de créer un plugin FireBreath qui capture les empreintes digitales à l'aide d'un scanner. Ce code s'exécute très bien en tant qu'application console (moins le boost threading).

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
    );
    ...
}

L'appel à winCaptureFPrint() démarre correctement WBFCapture_thread() et arrête l'attente à WinBioCaptureSample() mais l'utilisation de scanners d'empreintes digitales ne fait rien. La méthode winBioCaptureSample() ne semble pas recevoir de signal de la part du scanner. J'ai pensé qu'il s'agissait probablement d'un problème de mise au point, j'ai donc essayé

resultHandle = WinBioAcquireFocus()

Mais elle échoue toujours. L'erreur E_ACCESSDENIED (refus d'accès général) est affichée. Y a-t-il quelque chose dans FireBreath focuswise que je ne connais pas ou est-ce que je fais quelque chose d'incorrect ?

0voto

himanshu8767 Points 37

Installez les dispositifs biométriques Authentec pour que les capteurs écoutent votre code

0voto

Kuba Beránek Points 1

Exécutez Visual Studio en tant qu'administrateur et cela devrait fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X