由 Windows 生物识别框架调用,从格式化为标准 WINBIO_BIR 结构的引擎中检索最近处理的功能集或模板的副本。
Syntax
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 值之一来指示错误。
| 返回代码 | Description | 
|---|---|
  | 
引擎适配器不支持 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;
}
要求
| Requirement | 价值 | 
|---|---|
| 最低支持的客户端 | Windows 7 [仅限桌面应用] | 
| 支持的最低服务器 | Windows Server 2008 R2 [仅限桌面应用] | 
| 目标平台 | Windows操作系统 | 
| Header | winbio_adapter.h (包括 Winbio_adapter.h) |