Win32 API 日本語リファレンス
ホーム › Devices.BiometricFramework › PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN

PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN

コールバック

シグネチャ

HRESULT PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN(
    WINBIO_PIPELINE* Pipeline,
    BYTE Flags,
    WINBIO_BIR** SampleBuffer,
    UINT_PTR* SampleSize
);

パラメーター

フィールド型説明
PipelineWINBIO_PIPELINE*操作を実行するバイオメトリックユニットに関連付けられた WINBIO_PIPELINE 構造体へのポインター。
FlagsBYTE

エンジンが返す WINBIO_BIR 構造体のプロパティを指定する値。次のセキュリティおよび処理レベルのフラグのビットごとの OR を指定できます。

WINBIO_DATA_FLAG_PRIVACY

データは暗号化されています。

SampleBufferWINBIO_BIR**特徴セットまたはテンプレートを格納する WINBIO_BIR 構造体へのポインターを受け取る変数のアドレス。
SampleSizeUINT_PTR*SampleBuffer パラメーターで返される WINBIO_BIR 構造体のサイズ (バイト単位) を格納する変数へのポインター。

公式ドキュメント

直近に処理された特徴セットまたはテンプレートのコピーを、標準の WINBIO_BIR 構造体の形式でエンジンから取得するために、Windows Biometric Framework から呼び出されます。

戻り値

関数が成功した場合は S_OK を返します。関数が失敗した場合は、エラーを示すために次のいずれかの HRESULT 値を返す必要があります。

戻り値 説明
E_INVALIDARG
エンジンアダプターが、Flags パラメーターで指定されたフラグの組み合わせをサポートしていません。
E_OUTOFMEMORY
WINBIO_BIR 構造体を作成するための十分なメモリがありません。
E_POINTER
必須のポインターパラメーターが NULL です。
WINBIO_E_INVALID_DEVICE_STATE
パイプラインに、Flags パラメーターで要求される種類のデータが含まれていません。
E_NOTIMPL
このメソッドは現在実装されていません。

解説(Remarks)

SampleBuffer パラメーターで返すバッファーは、HeapAlloc 関数を使用してプロセスヒープから割り当てる必要があります。バッファーを作成すると、それは Windows Biometric Framework の所有物になります。Framework は使用を終えた時点でこのメモリを解放するため、この関数の実装ではバッファーを解放したり、そのポインターを保存したりしてはなりません。ポインターを保存しないことで、この関数から戻った後にエンジンアダプターの他の部分がそのバッファーを使用しようとするのを防げます。

例

次の擬似コードは、この関数の実装例の一つを示しています。この例はそのままではコンパイルできません。目的に合わせて調整してください。

//////////////////////////////////////////////////////////////////////////////////////////
//
// 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;
}
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)