PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN回呼函式 (winbio_adapter.h)
由 Windows 生物特徵辨識架構呼叫,以擷取管線中已完成註冊範本的雜湊。
語法
PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN PibioEngineGetEnrollmentHashFn;
HRESULT PibioEngineGetEnrollmentHashFn(
[in, out] PWINBIO_PIPELINE Pipeline,
[out] PUCHAR *HashValue,
[out] PSIZE_T HashSize
)
{...}
參數
[in, out] Pipeline
與執行作業之生物特徵辨識單位相關聯的 WINBIO_PIPELINE 結構的指標。
[out] HashValue
接收包含範本雜湊之位元組陣列指標的變數位址。
[out] HashSize
接收 HashValue 參數所指向雜湊大小的變數指標,以位元組為單位。
傳回值
如果函式成功,則會傳回S_OK。 如果函式失敗,它必須傳回下列其中一個 HRESULT 值,以指出錯誤。
傳回碼 | 描述 |
---|---|
|
強制指標參數為 Null。 |
|
引擎配接器不支援範本雜湊產生。 |
|
管線不包含已完成的註冊範本。 |
備註
呼叫 EngineAdapterCommitEnrollment 時,此函式所雜湊的範本必須是將儲存在資料庫中的已完成註冊範本。 您不得雜湊其中一個中繼擷取的樣本。
用來產生範本雜湊的演算法是在此管線上,由最近呼叫所選取的 EngineAdapterSetHashAlgorithm 所選取。
包含雜湊的記憶體會在 EngineAdapterGetEnrollmentHash 函式成功傳回之後,由引擎配接器擁有和管理。 引擎配接器必須讓緩衝區位址保持有效,直到 Framework 呼叫下列任何函式為止:
引擎配接器也必須為每個管線維護個別的雜湊緩衝區。範例
下列虛擬程式碼顯示此函式的一個可能實作。 此範例不會編譯。 您必須調整它以符合您的用途。
//////////////////////////////////////////////////////////////////////////////////////////
//
// EngineAdapterGetEnrollmentHash
//
// Purpose:
// Retrieves the hash of the completed enrollment template in the pipeline.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated
// with the biometric unit performing the operation
// HashValue - Contains the hash of the template
// HashSize - Size, in bytes, of the hash pointed to by the
// HashValue parameter
//
static HRESULT
WINAPI
EngineAdapterGetEnrollmentHash(
__inout PWINBIO_PIPELINE Pipeline,
__out PUCHAR *HashValue,
__out PSIZE_T HashSize
)
{
////////////////////////////////////////////////////////////////////////////
// Return E_NOTIMPL here if your adapter does not support template hashing.
////////////////////////////////////////////////////////////////////////////
HRESULT hr = S_OK;
// Verify that pointer arguments are not NULL.
if (!ARGUMENT_PRESENT(Pipeline) ||
!ARGUMENT_PRESENT(HashValue) ||
!ARGUMENT_PRESENT(HashSize))
{
hr = E_POINTER;
goto cleanup;
}
// Retrieve the context from the pipeline.
PWINBIO_ENGINE_CONTEXT context =
(PWINBIO_ENGINE_CONTEXT)Pipeline->EngineContext;
// Return if an enrollment is not in progress. This example assumes that
// an enrollment object is part of your engine context structure.
if (context->Enrollment.InProgress != TRUE)
{
hr = WINBIO_E_INVALID_DEVICE_STATE;
goto cleanup;
}
// Initialize the hash.
*HashValue = NULL;
*HashSize = 0;
// If your engine adapter supports template hashing, call a custom function
// (_AdapterGenerateHashForTemplate) to calculate the hash of the new
// enrollment template. The hash value should be saved in the adapter
// context.
hr = _AdapterGenerateHashForTemplate(
context,
context->Enrollment.Template,
context->Enrollment.TemplateSize,
context->HashBuffer,
&context->HashSize
);
if (FAILED(hr))
{
goto cleanup;
}
// Return the hash to the caller.
*HashValue = context->HashBuffer;
*HashSize = context->HashSize;
cleanup:
return hr;
}
規格需求
最低支援的用戶端 | Windows 7 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | winbio_adapter.h (包含 Winbio_adapter.h) |