Compartilhar via


Suporte a sequência de chamada IOCTL biométrica

WBDI é uma interface baseada em IOCTL padrão do Windows. Quando você escreve um driver WBDI, você deve oferecer suporte a um conjunto de IOCTLs obrigatórias. Além disso, você pode optar por oferecer suporte a IOCTLs opcionais. Você pode encontrar uma lista completa de IOCTLs obrigatórias e opcionais em IOCTLs biométricas.

Um driver WBDI fornecido pelo fornecedor deve estar preparado para receber solicitações IOCTL na seguinte ordem do Serviço Biométrico do Windows (WBS). Você pode revisar exemplos de manipuladores para essas IOCTLs em Device.cpp em WudfBioUsbSample.

  1. O Serviço Biométrico do Windows ou o adaptador de sensor inicializa o dispositivo biométrico e verifica se ele está pronto para uso. O serviço ou adaptador envia uma solicitação IOCTL_BIOMETRIC_GET_ATTRIBUTES .

    O motorista recebe um ponteiro para uma estrutura WINBIO_SENSOR_ATTRIBUTES . No manipulador para este IOCTL, o driver deve preencher os membros relevantes dessa estrutura e concluir a solicitação chamando IWDFIoRequest::Complete.

  2. Em seguida, o motorista recebe IOCTL_BIOMETRIC_GET_SENSOR_STATUS. O motorista deve preencher os membros relevantes da estrutura WINBIO_DIAGNOSTICS e preencher a solicitação.

  3. Se o driver indicar que a calibração é necessária no membro SensorStatus da estrutura WINBIO_DIAGNOSTICS que foi retornada da solicitação de IOCTL_BIOMETRIC_GET_SENSOR_STATUS, o driver receberá uma solicitação IOCTL_BIOMETRIC_CALIBRATE em seguida. O driver deve fornecer um manipulador para este IOCTL. Depois de calibrar o dispositivo, o retorno de chamada deve retornar uma estrutura WINBIO_CALIBRATION_INFO.

  4. O motorista agora pode esperar receber IOCTL_BIOMETRIC_CAPTURE_DATA solicitações. Como apenas uma captura pode estar pendente a qualquer momento, o manipulador dessa solicitação deve primeiro confirmar que nenhuma solicitação está pendente. Se uma solicitação estiver pendente, conclua a solicitação com WINBIO_E_DATA_COLLECTION_IN_PROGRESS.

    O serviço WinBio ou um aplicativo pode solicitar o cancelamento de uma solicitação de captura pendente a qualquer momento chamando rotinas de cancelamento Win32, como CancelIo, CancelIoEx ou CancelSynchronousIo. Como tal, os motoristas WBDI também devem apoiar o cancelamento.

    O driver lida com o cancelamento chamando IWDFIoRequest::MarkCancelable para registrar uma interface IRequestCallbackCancel.

    Em seguida, o manipulador programa o dispositivo para o modo de captura e retorna do retorno de chamada. A solicitação deve permanecer pendente até que seja cancelada ou o driver detecte que a captura está concluída. Depois que essa solicitação de E/S for concluída, o dispositivo poderá retornar a um estado ocioso. Um cliente pode fazer uma chamada inicial para IOCTL_BIOMETRIC_CAPTURE_DATA para determinar o tamanho correto do buffer para uma captura real.

  5. O manipulador de IOCTL_BIOMETRIC_RESET deve redefinir fisicamente o dispositivo para um estado conhecido ou ocioso. O manipulador dessa solicitação também deve cancelar qualquer E/S de coleta de dados pendente e preencher a estrutura WINBIO_BLANK_PAYLOAD. Em seguida, o manipulador conclui a solicitação. Os clientes não precisam redefinir chamadas entre chamadas para IOCTL_BIOMETRIC_CAPTURE_DATA.