PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN 콜백 함수(winbio_adapter.h)
파이프라인에서 완료된 등록 템플릿의 해시를 검색하기 위해 Windows 생체 인식 프레임워크에서 호출됩니다.
구문
PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN PibioEngineGetEnrollmentHashFn;
HRESULT PibioEngineGetEnrollmentHashFn(
[in, out] PWINBIO_PIPELINE Pipeline,
[out] PUCHAR *HashValue,
[out] PSIZE_T HashSize
)
{...}
매개 변수
[in, out] Pipeline
작업을 수행하는 생체 인식 단위와 연결된 WINBIO_PIPELINE 구조체에 대한 포인터입니다.
[out] HashValue
템플릿의 해시를 포함하는 바이트 배열에 대한 포인터를 수신하는 변수의 주소입니다.
[out] HashSize
HashValue 매개 변수가 가리키는 해시의 크기(바이트)를 수신하는 변수에 대한 포인터입니다.
반환 값
함수가 성공하면 S_OK를 반환합니다. 함수가 실패하면 다음 HRESULT 값 중 하나를 반환하여 오류를 나타내야 합니다.
반환 코드 | 설명 |
---|---|
|
필수 포인터 매개 변수는 NULL입니다. |
|
엔진 어댑터는 템플릿 해시 생성을 지원하지 않습니다. |
|
파이프라인에 완료된 등록 템플릿이 포함되어 있지 않습니다. |
설명
이 함수에 의해 해시된 템플릿은 EngineAdapterCommitEnrollment 가 호출될 때 데이터베이스에 저장되는 완료된 등록 템플릿이어야 합니다. 중간 캡처된 샘플 중 하나를 해시해서는 안 됩니다.
템플릿 해시를 생성하는 데 사용되는 알고리즘은 이 파이프라인에서 EngineAdapterSetHashAlgorithm에 대한 가장 최근의 호출에 의해 선택된 것입니다.
해시를 포함하는 메모리는 EngineAdapterGetEnrollmentHash 함수가 성공적으로 반환된 후 엔진 어댑터가 소유하고 관리합니다. 엔진 어댑터는 프레임워크가 다음 함수를 호출할 때까지 버퍼 주소를 유효한 상태로 유지해야 합니다.
또한 엔진 어댑터는 각 파이프라인에 대해 별도의 해시 버퍼를 유지 관리해야 합니다.예제
다음 의사 코드는 이 함수의 가능한 구현 중 하나를 보여 줍니다. 예제는 컴파일되지 않습니다. 목적에 맞게 조정해야 합니다.
//////////////////////////////////////////////////////////////////////////////////////////
//
// EngineAdapterGetEnrollmentHash
//
// Purpose:
// Retrieves the hash of the completed enrollment template in the pipeline.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated
// with the biometric unit performing the operation
// HashValue - Contains the hash of the template
// HashSize - Size, in bytes, of the hash pointed to by the
// HashValue parameter
//
static HRESULT
WINAPI
EngineAdapterGetEnrollmentHash(
__inout PWINBIO_PIPELINE Pipeline,
__out PUCHAR *HashValue,
__out PSIZE_T HashSize
)
{
////////////////////////////////////////////////////////////////////////////
// Return E_NOTIMPL here if your adapter does not support template hashing.
////////////////////////////////////////////////////////////////////////////
HRESULT hr = S_OK;
// Verify that pointer arguments are not NULL.
if (!ARGUMENT_PRESENT(Pipeline) ||
!ARGUMENT_PRESENT(HashValue) ||
!ARGUMENT_PRESENT(HashSize))
{
hr = E_POINTER;
goto cleanup;
}
// Retrieve the context from the pipeline.
PWINBIO_ENGINE_CONTEXT context =
(PWINBIO_ENGINE_CONTEXT)Pipeline->EngineContext;
// Return if an enrollment is not in progress. This example assumes that
// an enrollment object is part of your engine context structure.
if (context->Enrollment.InProgress != TRUE)
{
hr = WINBIO_E_INVALID_DEVICE_STATE;
goto cleanup;
}
// Initialize the hash.
*HashValue = NULL;
*HashSize = 0;
// If your engine adapter supports template hashing, call a custom function
// (_AdapterGenerateHashForTemplate) to calculate the hash of the new
// enrollment template. The hash value should be saved in the adapter
// context.
hr = _AdapterGenerateHashForTemplate(
context,
context->Enrollment.Template,
context->Enrollment.TemplateSize,
context->HashBuffer,
&context->HashSize
);
if (FAILED(hr))
{
goto cleanup;
}
// Return the hash to the caller.
*HashValue = context->HashBuffer;
*HashSize = context->HashSize;
cleanup:
return hr;
}
요구 사항
지원되는 최소 클라이언트 | Windows 7 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winbio_adapter.h(Winbio_adapter.h 포함) |