다음을 통해 공유


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 값 중 하나를 반환해야 합니다.

반환 코드 설명
E_INVALIDARG
엔진 어댑터는 Flags 매개 변수에 지정된 플래그의 조합을 지원하지 않습니다.
E_OUTOFMEMORY
WINBIO_BIR 구조를 만드는 데 사용할 수 있는 메모리가 부족합니다.
E_POINTER
필수 포인터 매개 변수는 NULL입니다.
WINBIO_E_INVALID_DEVICE_STATE
파이프라인에는 Flags 매개 변수에 필요한 데이터 형식이 포함되어 있지 않습니다.
E_NOTIMPL
현재 이 메서드는 구현되지 않습니다.

설명

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 포함)

추가 정보

EngineAdapterAcceptSampleData

플러그 인 함수