PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN 콜백 함수(winbio_adapter.h)
Windows 생체 인식 프레임워크에서 표준 WINBIO_BIR 구조 형식의 엔진에서 가장 최근에 처리된 기능 집합 또는 템플릿의 복사본을 검색하기 위해 호출됩니다.
구문
PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN PibioEngineExportEngineDataFn;
HRESULT PibioEngineExportEngineDataFn(
[in, out] PWINBIO_PIPELINE Pipeline,
[in] WINBIO_BIR_DATA_FLAGS Flags,
[out] PWINBIO_BIR *SampleBuffer,
[out] PSIZE_T SampleSize
)
{...}
매개 변수
[in, out] Pipeline
작업을 수행하는 생체 인식 단위와 연결된 WINBIO_PIPELINE 구조체에 대한 포인터입니다.
[in] Flags
엔진에서 반환하는 WINBIO_BIR 구조체의 속성을 지정하는 값입니다. 다음 보안 및 처리 수준 플래그 중 비트 OR 일 수 있습니다.
WINBIO_DATA_FLAG_PRIVACY
데이터가 암호화되어 있습니다.
WINBIO_DATA_FLAG_INTEGRITY 데이터는 MAC(메시지 인증 코드)에 의해 디지털 서명되거나 보호됩니다.
WINBIO_DATA_FLAG_SIGNED 이 플래그와 WINBIO_DATA_FLAG_INTEGRITY 플래그가 설정되면 데이터가 서명됩니다. 이 플래그가 설정되지 않았지만 WINBIO_DATA_FLAG_INTEGRITY 플래그가 설정되면 MAC이 계산됩니다.
WINBIO_DATA_FLAG_RAW 데이터는 캡처된 형식입니다.
WINBIO_DATA_FLAG_INTERMEDIATE 데이터는 원시가 아니지만 완전히 처리되지 않았습니다.
WINBIO_DATA_FLAG_PROCESSED 데이터가 처리되었습니다.
[out] SampleBuffer
기능 집합 또는 템플릿을 포함하는 WINBIO_BIR 구조체에 대한 포인터를 수신하는 변수의 주소입니다.
[out] SampleSize
SampleBuffer 매개 변수에 반환된 WINBIO_BIR 구조체의 크기(바이트)를 포함하는 변수에 대한 포인터입니다.
반환 값
함수가 성공하면 S_OK를 반환합니다. 함수가 실패하는 경우 오류를 나타내려면 다음 HRESULT 값 중 하나를 반환해야 합니다.
반환 코드 | 설명 |
---|---|
|
엔진 어댑터는 Flags 매개 변수에 지정된 플래그의 조합을 지원하지 않습니다. |
|
WINBIO_BIR 구조를 만드는 데 사용할 수 있는 메모리가 부족합니다. |
|
필수 포인터 매개 변수는 NULL입니다. |
|
파이프라인에는 Flags 매개 변수에 필요한 데이터 형식이 포함되어 있지 않습니다. |
|
현재 이 메서드는 구현되지 않습니다. |
설명
HeapAlloc 함수를 사용하여 프로세스 힙에서 SampleBuffer 매개 변수에 반환될 버퍼를 할당해야 합니다. 버퍼를 만든 후에는 Windows 생체 인식 프레임워크의 속성이 됩니다. 프레임워크는 사용이 완료되면 이 메모리의 할당을 취소하므로 이 함수의 구현에서 버퍼의 할당을 취소하거나 포인터를 저장하려고 시도해서는 안 됩니다. 포인터를 저장하지 않으면 이 함수가 반환된 후 엔진 어댑터의 다른 부분이 버퍼를 사용하지 못하게 됩니다.
예제
다음 의사 코드는 이 함수의 가능한 구현 중 하나를 보여 줍니다. 이 예제는 컴파일되지 않습니다. 목적에 맞게 조정해야 합니다.
//////////////////////////////////////////////////////////////////////////////////////////
//
// EngineAdapterExportEngineData
//
// Purpose:
// Retrieves a copy of the most recently processed feature set or template.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated
// with the biometric unit performing the operation
// Flags - Security and processing level flags
// SampleBuffer - Contains the feature set or template
// SampleSize - Size, in bytes, of the structure returned in the
// SampleBuffer parameter.
//
static HRESULT
WINAPI
EngineAdapterExportEngineData(
__inout PWINBIO_PIPELINE Pipeline,
__in WINBIO_BIR_DATA_FLAGS Flags,
__out PWINBIO_BIR *SampleBuffer,
__out PSIZE_T SampleSize
)
{
HRESULT hr = S_OK;
PWINBIO_BIR birAddress = NULL;
SIZE_T birSize = 0;
// Verify that pointer arguments are not NULL.
if (!ARGUMENT_PRESENT(Pipeline) ||
!ARGUMENT_PRESENT(SampleBuffer) ||
!ARGUMENT_PRESENT(SampleSize))
{
hr = E_POINTER;
goto cleanup;
}
// Retrieve the context from the pipeline.
PWINBIO_ENGINE_CONTEXT context =
(PWINBIO_ENGINE_CONTEXT)Pipeline->EngineContext;
// At least one processing level flag must be set. Your adapter can also
// place additional restrictions on supported export formats.
if (Flags & (WINBIO_DATA_FLAG_RAW |
WINBIO_DATA_FLAG_INTERMEDIATE |
WINBIO_DATA_FLAG_PROCESSED) == 0)
{
hr = E_INVALIDARG;
goto cleanup;
}
// You must implement the _CreateBirFromAdapterData function to extract
// data from the engine context and create a new WINBIO_BIR structure. The
// function passes ownership of the new biometric information record (BIR)
// to the EngineAdapterExportEngineData routine which then passes the BIR
// to the caller.
hr = _CreateBirFromAdapterData( context, Flags, &birAddress, &birSize);
if (SUCCEEDED(hr))
{
*SampleBuffer = birAddress;
*SampleSize = birSize;
}
cleanup:
return hr;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winbio_adapter.h(Winbio_adapter.h 포함) |