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

PIBIO_SENSOR_CLEAR_CONTEXT_FN

コールバック

シグネチャ

HRESULT PIBIO_SENSOR_CLEAR_CONTEXT_FN(
    WINBIO_PIPELINE* Pipeline
);

パラメーター

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

公式ドキュメント

Windows Biometric Framework によって呼び出され、バイオメトリック ユニットの処理パイプラインを新しい操作に向けて準備します。この関数は、センサー コンテキストから一時データをフラッシュし、センサー アダプターを明確に定義された初期状態にする必要があります。

戻り値

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

戻り値 説明
E_POINTER
Pipeline 引数を NULL にすることはできません。

解説(Remarks)

SensorAdapterClearContext 関数の実装では、サンプル バッファーをクリアする必要があります。

例

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

//////////////////////////////////////////////////////////////////////////////////////////
//
// SensorAdapterClearContext
//
// 目的:
//      処理パイプラインを新しい操作に向けて準備します。この関数は、
//      センサー コンテキストから一時データをフラッシュし、センサー
//      アダプターを明確に定義された初期状態にする必要があります。
//      
// パラメーター:
//      Pipeline -  バイオメトリック ユニットに関連付けられた
//                  WINBIO_PIPELINE 構造体へのポインター。
//
static HRESULT
WINAPI
SensorAdapterClearContext(
    __inout PWINBIO_PIPELINE Pipeline
    )
{
    // Pipeline パラメーターが NULL でないことを確認します。
    if (!ARGUMENT_PRESENT(Pipeline))
    {
        hr = E_POINTER;
        goto cleanup;
    }

    // パイプラインからコンテキストを取得します。
    PWINBIO_SENSOR_CONTEXT sensorContext = 
        (PWINBIO_SENSOR_CONTEXT)Pipeline->SensorContext;

    // センサーの現在の状態を検証します。
    if (sensorContext == NULL)
    {
        return WINBIO_E_INVALID_DEVICE_STATE;
    }

    // センサー アダプターの状態を変更し、途中まで完了している操作を破棄します。
    // アダプターによっては、状態変数の変更やハードウェアで実装された
    // 動作が必要になる場合があります。次の例では、センサー アダプター
    // コンテキストに ULONG のデータ メンバーと、キャプチャ バッファーおよび
    // 属性バッファーへのポインターが含まれていることを前提としています。

    sensorContext->SomeField = 0L;

    if (sensorContext->CaptureBuffer != NULL)
    {
        // キャプチャ バッファーをゼロで埋めます。
        SecureZeroMemory(
            sensorContext->CaptureBuffer,
            sensorContext->CaptureBufferSize);

        // キャプチャ バッファーを解放します。
        _AdapterRelease(sensorContext->CaptureBuffer);
        sensorContext->CaptureBuffer = NULL;
        sensorContext->CaptureBufferSize = 0;
    }

    if (sensorContext->AttributesBuffer != NULL)
    {
        // 属性バッファーをゼロで埋めます。
        SecureZeroMemory(
            sensorContext->AttributesBuffer,
            sensorContext->AttributesBufferSize);

        // 属性バッファーを解放します。
        _AdapterRelease(sensorContext->AttributesBuffer);
        sensorContext->AttributesBuffer = NULL;
        sensorContext->AttributesBufferSize = 0;
    }

    // TODO: センサー コンテキストのクリアに必要なその他の処理を実行します。

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