EVT_WDF_USB_READERS_FAILED fonction de rappel (wdfusb.h)

[S’applique à KMDF et UMDF]

La fonction de rappel de l’événement EvtUsbTargetPipeReadersFailed d’un pilote informe le pilote qu’un lecteur continu a signalé une erreur lors du traitement d’une demande de lecture.

Syntaxe

EVT_WDF_USB_READERS_FAILED EvtWdfUsbReadersFailed;

BOOLEAN EvtWdfUsbReadersFailed(
  [in] WDFUSBPIPE Pipe,
  [in] NTSTATUS Status,
  [in] USBD_STATUS UsbdStatus
)
{...}

Paramètres

[in] Pipe

Handle d’un objet de canal d’infrastructure.

[in] Status

Valeur NTSTATUS retournée par la cible d’E/S du canal.

[in] UsbdStatus

Valeur status typée USBD_STATUS que la cible d’E/S du canal a retournée.

Valeur retournée

La fonction de rappel d’événement EvtUsbTargetPipeReadersFailed retourne une valeur booléenne qui, si TRUE, provoque la réinitialisation du canal USB par l’infrastructure, puis le redémarrage du lecteur continu. Si cette fonction retourne FALSE, l’infrastructure ne réinitialise pas l’appareil ni ne redémarre le lecteur continu.

Remarques

Pour inscrire une fonction de rappel EvtUsbTargetPipeReadersFailed , le pilote doit placer l’adresse de la fonction dans une structure WDF_USB_CONTINUOUS_READER_CONFIG . Pour plus d’informations sur le moment où ajouter ce pointeur de fonction, consultez la section Remarques de WDF_USB_CONTINUOUS_READER_CONFIG_INIT.

Si un pilote a créé un lecteur continu pour un canal USB, l’infrastructure appelle la fonction de rappel EvtUsbTargetPipeReadersFailed du pilote si la cible D’E/S du pilote signale une erreur lorsqu’elle termine une demande de lecture. (Si la cible d’E/S termine correctement la demande, l’infrastructure appelle la fonction de rappel EvtUsbTargetPipeReadComplete du pilote.)

Avant que l’infrastructure n’appelle la fonction de rappel EvtUsbTargetPipeReadersFailed d’un pilote, elle tente d’annuler toutes les demandes de lecture en cours. Aucune demande de lecture n’est en cours lorsque l’infrastructure appelle la fonction de rappel EvtUsbTargetPipeReadersFailed . L’infrastructure ne met pas en file d’attente les demandes de lecture supplémentaires tant que la fonction de rappel EvtUsbTargetPipeReadersFailed n’est pas retournée.

Pour plus d’informations sur la façon dont l’infrastructure synchronise les appels à la fonction de rappel EvtUsbTargetPipeReadersFailed avec les appels à d’autres fonctions de rappel, consultez la section Remarques de EvtUsbTargetPipeReadComplete.

La fonction de rappel EvtUsbTargetPipeReadersFailed ne doit pas appeler WdfIoTargetStop pour arrêter la cible USB du lecteur continu. (En fait, l’appel de WdfIoTargetStop dans une fonction de rappel EvtUsbTargetPipeReadersFailed provoque un blocage.) En outre, la fonction de rappel ne doit pas appeler WdfIoTargetStart pour redémarrer le lecteur continu. Au lieu de cela, l’infrastructure redémarre le lecteur si la fonction de rappel retourne TRUE. Pour plus d’informations sur le moment d’appeler WdfIoTargetStart et WdfIoTargetStop pour un lecteur continu, consultez Utilisation de canaux USB.

Si un pilote ne fournit pas de fonction de rappel EvtUsbTargetPipeReadersFailed et que la cible d’E/S du pilote signale une erreur, l’infrastructure réinitialise le canal USB et redémarre le lecteur continu.

Pour plus d’informations sur la fonction de rappel EvtUsbTargetPipeReadersFailed et les cibles d’E/S USB, consultez Cibles d’E/S USB.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête wdfusb.h (inclure Wdf.h)
IRQL PASSIVE_LEVEL

Voir aussi

EvtUsbTargetPipeReadComplete

WDF_USB_CONTINUOUS_READER_CONFIG