PIBIO_ENGINE_IDENTIFY_ALL_FN
コールバックシグネチャ
HRESULT PIBIO_ENGINE_IDENTIFY_ALL_FN(
WINBIO_PIPELINE* Pipeline,
UINT_PTR* PresenceCount,
WINBIO_PRESENCE** PresenceArray
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| Pipeline | WINBIO_PIPELINE* | 操作を実行するバイオメトリックユニットに関連付けられた WINBIO_PIPELINE 構造体へのポインターです。 |
| PresenceCount | UINT_PTR* | この関数が検出したプレゼンスの数を受け取る変数のアドレスです。 |
| PresenceArray | WINBIO_PRESENCE** | WINBIO_PRESENCE 要素の配列へのポインターを受け取る変数のアドレスです。 |
公式ドキュメント
カメラのフレーム内に現在存在する人物の識別情報を判定するために、Windows Biometric Framework から呼び出されます。
戻り値
関数が成功した場合は S_OK を返します。関数が失敗した場合は、エラーを示すために次のいずれかの HRESULT 値を返す必要があります。
| 戻り値 | 説明 |
|---|---|
|
どのエラーコードが返された場合でも、Biometric Service はそのエラーをログに記録し、そのカメラフレームを無視します。 |
解説(Remarks)
バイオメトリックサービスは、新しいデータフレームをエンジンアダプターに送信した後に、このメソッドを呼び出します。
この関数は、データフレームの処理後に、そのデータフレーム内で検出されたプレゼンスごとに 1 つの WINBIO_PRESENCE 要素を返す必要があります。
EngineAdapterIdentifyAll 関数がフレーム内で顔を 1 つも検出できなかった場合は、HRESULT として S_OK を返し、戻り値パラメーターである PresenceCount と PresenceArray に、それぞれ 0 と NULL を設定します。つまり、人のプレゼンスが 1 つも含まれていないフレームは、エラー状態ではありません。
EngineAdapterIdentifyAll が S_OK 以外の HRESULT を返すのは、Presence Monitor の状態の更新にそのフレームを使用することをバイオメトリックサービスに行わせたくない場合だけです。これはまれなケースです。 エンジンアダプターは、PresenceArray パラメーターで返す WINBIO_PRESENCE 要素の配列を割り当てる責任があります。このメモリは、HeapAlloc 関数を使用してプロセスヒープから割り当てる必要があります。配列が作成されると、その配列は Windows Biometric Framework の所有物になります。Framework はこのメモリを使用した後に解放するため、エンジンアダプターはこの配列を解放したり、そのポインターを保存したりしてはなりません。この規則に従わないと、ヒープの破損を招き、バイオメトリックサービスがクラッシュする可能性があります。
PresenceArray 内の個々の WINBIO_PRESENCE 項目の値によって、クライアントアプリケーション向けに生成されるイベントが決まります。詳細については、WINBIO_PRESENCE 構造体の説明を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)