Partilhar via


Suportando a sequência de chamada IOCTL biométrica

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

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 consultar exemplos de manipuladores destes IOCTLs em Device.cpp no WudfBioUsbSample.

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

    O motorista recebe um ponteiro para uma estrutura WINBIO_SENSOR_ATTRIBUTES. No manipulador para este IOCTL, o controlador deve preencher os membros relevantes desta estrutura e completar o pedido chamando IWDFIoRequest::Complete.

  2. Em seguida, o motorista recebe IOCTL_BIOMETRIC_GET_SENSOR_STATUS. O condutor deve preencher os membros relevantes da estrutura WINBIO_DIAGNOSTICS e completar o pedido.

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

  4. O condutor pode agora esperar receber solicitações de IOCTL_BIOMETRIC_CAPTURE_DATA. 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 um pedido estiver pendente, preencha-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 do Win32, como CancelIo, CancelIoExou CancelSynchronousIo. Como tal, os controladores WBDI também devem suportar o cancelamento.

    O driver lida com o cancelamento chamando IWDFIoRequest::MarkCancelable para registrar um interface de 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é ser cancelada ou o driver detectar 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 para IOCTL_BIOMETRIC_RESET deve redefinir fisicamente o dispositivo para um estado conhecido ou ocioso. O manipulador para esta solicitação deve também 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 invocar uma redefinição entre chamadas para IOCTL_BIOMETRIC_CAPTURE_DATA.