função de retorno de chamada PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN (winbio_adapter.h)
Chamado pela Estrutura Biométrica do Windows para recuperar uma cópia do conjunto de recursos ou modelo processado mais recentemente do mecanismo formatado como uma estrutura de WINBIO_BIR padrão.
Sintaxe
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
)
{...}
Parâmetros
[in, out] Pipeline
Ponteiro para uma estrutura WINBIO_PIPELINE associada à unidade biométrica que executa a operação.
[in] Flags
Um valor que especifica as propriedades da estrutura WINBIO_BIR retornada pelo mecanismo. Isso pode ser um OR bit a bit dos seguintes sinalizadores de nível de segurança e processamento:
WINBIO_DATA_FLAG_PRIVACY
Os dados estão criptografados.
WINBIO_DATA_FLAG_INTEGRITY Os dados são assinados digitalmente ou protegidos por um MAC (código de autenticação de mensagem).
WINBIO_DATA_FLAG_SIGNED Se esse sinalizador e o sinalizador WINBIO_DATA_FLAG_INTEGRITY estiverem definidos, os dados serão assinados. Se esse sinalizador não estiver definido, mas o sinalizador WINBIO_DATA_FLAG_INTEGRITY estiver definido, um MAC será calculado.
WINBIO_DATA_FLAG_RAW Os dados estão no formato com o qual foram capturados.
WINBIO_DATA_FLAG_INTERMEDIATE Os dados não são brutos, mas não foram completamente processados.
WINBIO_DATA_FLAG_PROCESSED Os dados foram processados.
[out] SampleBuffer
Endereço de uma variável que recebe um ponteiro para uma estrutura WINBIO_BIR que contém o conjunto de recursos ou modelo.
[out] SampleSize
Ponteiro para uma variável que contém o tamanho, em bytes, da estrutura WINBIO_BIR retornada no parâmetro SampleBuffer .
Retornar valor
Se a função for bem-sucedida, ela retornará S_OK. Se a função falhar, ela deverá retornar um dos seguintes valores HRESULT para indicar o erro.
Código de retorno | Descrição |
---|---|
|
O adaptador do mecanismo não dá suporte à combinação de sinalizadores especificada pelo parâmetro Flags . |
|
Não há memória suficiente disponível para criar a estrutura WINBIO_BIR . |
|
Um parâmetro de ponteiro obrigatório é NULL. |
|
O pipeline não contém o tipo de dados exigido pelo parâmetro Flags . |
|
No momento, esse método não está implementado. |
Comentários
Você deve alocar o buffer a ser retornado no parâmetro SampleBuffer do heap de processo usando a função HeapAlloc . Depois que o buffer é criado, ele se torna a propriedade da Estrutura Biométrica do Windows. Como o Framework desaloca essa memória quando termina de usá-la, sua implementação dessa função não deve tentar desalocar o buffer nem salvar um ponteiro para ela. Ao não salvar o ponteiro, você impede que outras partes do adaptador do mecanismo tentem usar o buffer depois que essa função retornar.
Exemplos
O pseudocódigo a seguir mostra uma possível implementação dessa função. O exemplo não é compilado. Você deve adaptá-lo para se adequar à sua finalidade.
//////////////////////////////////////////////////////////////////////////////////////////
//
// 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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 R2 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | winbio_adapter.h (inclua Winbio_adapter.h) |