Partager via


fonction de rappel EVT_WDF_USB_READERS_FAILED (wdfusb.h)

[S’applique à KMDF et UMDF]

La fonction de rappel d’événement evtUsbTargetPipeReadersFailed du 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 vers un objet de canal d’infrastructure.

[in] Status

La valeur NTSTATUS que la cible d’E/S du canal a retournée.

[in] UsbdStatus

Valeur d’état USBD_STATUS-typée retournée par la cible d’E/S du canal.

Valeur de retour

La fonction de rappel d’événement EvtUsbTargetPipeReadersFailed retourne une valeur booléenne qui, si TRUE, provoque la réinitialisation du canal USB, puis redémarre le lecteur continu. Si cette fonction retourne FAUX, l’infrastructure ne réinitialise pas l’appareil ni 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 l’ajout de 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 le EvtUsbTargetPipeReadersFailed fonction de rappel 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 requête, l’infrastructure appelle la fonction de rappel evtUsbTargetPipeReadComplete evtUsbTargetPipeReadComplete du pilote.)

Avant que l’infrastructure appelle la fonction de rappel EvtUsbTargetPipeReadersFailed du 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 la fonction de rappel retourne.

Pour plus d’informations sur la façon dont l’infrastructure synchronise les appels aux EvtUsbTargetPipeReadersFailed fonction de rappel avec des appels à d’autres fonctions de rappel, consultez la section Notes 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 WdfIoTargetStop dans un EvtUsbTargetPipeReadersFailed fonction de rappel provoque un blocage.) En outre, la fonction de rappel ne doit pas appeler WdfIoTargetStart pour redémarrer le lecteur continu. Au lieu de cela, le framework 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 Working with USB Pipes.

Si un pilote ne fournit pas de EvtUsbTargetPipeReadersFailed fonction de rappel 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 les cibles de rappel EvtUsbTargetPipeReadersFailed et les cibles d’E/S USB, consultez cibles d’E/S USB.

Exigences

Exigence Valeur
plateforme cible Universel
version minimale de KMDF 1.0
version minimale de UMDF 2.0
d’en-tête wdfusb.h (include Wdf.h)
IRQL PASSIVE_LEVEL

Voir aussi

EvtUsbTargetPipeReadComplete

WDF_USB_CONTINUOUS_READER_CONFIG