Ошибка WinBioCaptureSampleWithCallback. OperationStatus = 0x80004001

Я пытаюсь прочитать отпечатки пальцев и сохранить их с помощью WBF.

Я попробовал пример кода, однако я получаю код ошибки обратно. Я могу использовать сканер отпечатков пальцев для входа в Windows, но не могу получить образцы из него.

Я использую Windows 10 в системе Lenovo Yoga и VS 2015 Community.

Вот что я получаю, когда запускаю свой код:

Вызов WinBioCaptureSampleWithCallback
Проведите датчик …

CaptureSampleCallback выполняется
Размах обработан — Идентификатор объекта: 0
Ошибка WinBioCaptureSampleWithCallback. OperationStatus = 0x80004001

Нажмите любую клавишу для выхода…

Спасибо!

Образец кода:

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

-1

Решение

Вы проверили в Google или с документацией SDK, что OperationStatus = 0x80004001 переводит? Я думаю, вам нужно остановить службу Windows для отпечатка пальца, прежде чем приступить к испытанию проекта, который вы разрабатываете в Visual Studio 2015.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector