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 生体認証フレームワークの プロパティになります。 フレームワークでは、このメモリの使用が完了すると割り当てが解除されるため、この関数の実装でバッファーの割り当てを解除したり、そのメモリへのポインターを保存したりしないでください。 ポインターを保存しないことで、エンジン アダプターの他の部分がこの関数から戻った後にバッファーの使用を試みないようにします。
例
次の擬似コードは、この関数の 1 つの可能な実装を示しています。 この例はコンパイルされません。 目的に合わせて調整する必要があります。
//////////////////////////////////////////////////////////////////////////////////////////
//
// 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 を含む) |