Compartilhar via


PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN função de retorno de chamada (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 de 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 sã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 a <marca>WINBIO_DATA_FLAG_INTEGRITY</sinalizador de marca> forem definidos, os dados serão assinados. Se esse sinalizador não estiver definido, mas a <marca>WINBIO_DATA_FLAG_INTEGRITY</sinalizador de marca> estiver definida, um MAC será computado.

  • 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 o modelo.

[out] SampleSize

Ponteiro para uma variável que contém o tamanho, em bytes, da estrutura de WINBIO_BIR retornada no parâmetro SampleBuffer .

Valor de retorno

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 Description
E_INVALIDARG
O adaptador do mecanismo não dá suporte à combinação de sinalizadores especificados pelo parâmetro Flags .
E_OUTOFMEMORY
Não há memória suficiente disponível para criar a estrutura WINBIO_BIR .
E_POINTER
Um parâmetro de ponteiro obrigatório é NULL.
WINBIO_E_INVALID_DEVICE_STATE
O pipeline não contém o tipo de dados exigido pelo parâmetro Flags .
E_NOTIMPL
Este método não está implementado no momento.

Observações

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 terminar de usá-la, sua implementação dessa função não deve tentar desalocar o buffer ou salvar um ponteiro nela. Ao não salvar o ponteiro, você impede que outras partes do adaptador do mecanismo tentem usar o buffer após o retorno dessa função.

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 atender à 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;
}

Requirements

Requirement Value
Cliente mínimo suportado Windows 7 [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2008 R2 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
Header winbio_adapter.h (inclua Winbio_adapter.h)

Consulte também

EngineAdapterAcceptSampleData

Funções de plug-in