Windows Biometric Framework の プライベートプールのOpenSessionでエラーが出る
解決したいこと
Windows Biometric Framework の プライベートプールのOpenSessionでエラーが出るのを解消したい
プライベートプールの作成までは
https://qiita.com/Leeya/items/d80fdbd4f6ed391f0407
を参考に作成しましたが、
OpenSessionでエラーが出てしまいます。
解決方法を教えて下さい。
発生している問題・エラー
WINBIO_E_CONFIGURATION_FAILURE 0x80098033
生体認証ユニットを構成できませんでした。
該当するソースコード
上記のソースを実行。OpenSessionの箇所で、上記エラーが発生。
static void onEnrollOrPractice(
__in bool CommitEnrollment
)
{
WINBIO_UNIT_ID unitIdArray[1] = {};
SIZE_T unitIdCount = ARRAYSIZE(unitIdArray);
WINBIO_UNIT_SCHEMA* unitSchemaArray = NULL;
SIZE_T unitSchemaCount = 0;
HRESULT hr = WinBioEnumBiometricUnits(
WINBIO_TYPE_FINGERPRINT,
&unitSchemaArray,
&unitSchemaCount
);
if (SUCCEEDED(hr))
{
SIZE_T selectedUnit = 0;
if (selectSensorMenu(
_T("Choose a sensor for the private pool"),
unitSchemaArray,
unitSchemaCount,
&selectedUnit
))
{
// Build the array of Unit IDs that will make
// up the private pool
unitIdArray[0] = unitSchemaArray[selectedUnit].UnitId;
unitIdCount = 1;
}
else
{
hr = E_INVALIDARG;
}
WinBioFree(unitSchemaArray);
unitSchemaArray = NULL;
unitSchemaCount = 0;
}
if (SUCCEEDED(hr))
{
GUID privateDatabaseId = PRIVATE_POOL_DATABASE_ID;
WINBIO_SESSION_HANDLE sessionHandle = NULL;
hr = WinBioOpenSession(
WINBIO_TYPE_FINGERPRINT,
WINBIO_POOL_PRIVATE,
WINBIO_FLAG_BASIC,
unitIdArray,
unitIdCount,
&privateDatabaseId,
&sessionHandle
);
if (SUCCEEDED(hr))
{
WINBIO_BIOMETRIC_SUBTYPE subFactor = WINBIO_SUBTYPE_NO_INFORMATION;
if (selectSubFactorMenu(&subFactor) &&
subFactor != WINBIO_SUBTYPE_NO_INFORMATION &&
subFactor != WINBIO_SUBTYPE_ANY)
{
//
// Locate sensor
//
_tprintf(_T("\nTap the sensor once when you're ready to begin enrolling...\n\n"));
WINBIO_UNIT_ID unitId = 0;
hr = WinBioLocateSensor(sessionHandle, &unitId);
if (SUCCEEDED(hr))
{
//
// Enroll begin
//
_tprintf(_T("\n(Begining enrollment sequence)\n\n"));
hr = WinBioEnrollBegin(
sessionHandle,
subFactor,
unitId
);
if (SUCCEEDED(hr))
{
SIZE_T swipeCount = 0;
for (swipeCount = 1;; ++swipeCount)
{
_tprintf(
_T("Swipe your finger on the sensor to capture %s sample.\n"),
(swipeCount == 1) ? _T("the first") : _T("another")
);
WINBIO_REJECT_DETAIL rejectDetail = 0;
hr = WinBioEnrollCapture(
sessionHandle,
&rejectDetail
);
_tprintf(_T(" Sample %d captured from unit number %d.\n"), swipeCount, unitId);
if (hr == WINBIO_I_MORE_DATA)
{
_tprintf(_T(" More data required.\n\n"));
continue;
}
if (FAILED(hr))
{
if (hr == WINBIO_E_BAD_CAPTURE)
{
_tprintf(_T("*** Error - Bad capture.\n"));
_tprintf(
_T("- %s\n"),
BioHelper::ConvertRejectDetailToString(rejectDetail)
);
hr = S_OK;
continue;
}
else
{
break;
}
}
else
{
_tprintf(_T(" Template completed.\n\n"));
break;
}
}
_tprintf(_T("\n"));
if (SUCCEEDED(hr))
{
if (CommitEnrollment)
{
// ENROLL
WINBIO_IDENTITY identity = {};
BOOLEAN isNewTemplate = FALSE;
_tprintf(_T("Committing enrollment...\n"));
hr = WinBioEnrollCommit(sessionHandle, &identity, &isNewTemplate);
if (SUCCEEDED(hr))
{
_tprintf(_T("Enrollment committed to database\n"));
displayIdentity(&identity, subFactor);
}
}
else
{
// PRACTICE
_tprintf(_T("Discarding enrollment...\n"));
hr = WinBioEnrollDiscard(sessionHandle);
if (SUCCEEDED(hr))
{
_tprintf(_T("Template discarded.\n"));
}
}
}
}
}
}
else
{
hr = E_INVALIDARG;
}
WinBioCloseSession(sessionHandle);
sessionHandle = NULL;
}
}
if (FAILED(hr))
{
LPTSTR errorMessage = BioHelper::ConvertErrorCodeToString(hr);
_tprintf(_T("*** Error - %s\n"), errorMessage);
LocalFree(errorMessage);
errorMessage = NULL;
}
}
自分で試したこと
対象エラーWINBIO_E_CONFIGURATION_FAILUREのGoogle検索
プライベートプールの登録は完了しているはず?それ以外の情報は見つからず。
こっちも結局はプライベートプールの登録がされてなかっただけ?
0