функция обратного вызова EVT_WDF_USB_READERS_FAILED (wdfusb.h)
[Относится к KMDF и UMDF]
Функция обратного вызова события EvtUsbTargetPipeReadersFailed сообщает драйверу, что непрерывное средство чтения сообщило об ошибке при обработке запроса на чтение.
Синтаксис
EVT_WDF_USB_READERS_FAILED EvtWdfUsbReadersFailed;
BOOLEAN EvtWdfUsbReadersFailed(
[in] WDFUSBPIPE Pipe,
[in] NTSTATUS Status,
[in] USBD_STATUS UsbdStatus
)
{...}
Параметры
[in] Pipe
Дескриптор объекта канала платформы.
[in] Status
Значение NTSTATUS, возвращаемое целевым объектом ввода-вывода канала.
[in] UsbdStatus
Значение USBD_STATUS типизированного состояния, возвращаемое целевым объектом ввода-вывода канала.
Возвращаемое значение
Функция обратного вызова события EvtUsbTargetPipeReadersFailed возвращает логическое значение, которое, если значение TRUE, заставляет платформу сбросить USB-канал, а затем перезапустить непрерывное средство чтения. Если эта функция возвращает значение FALSE, платформа не сбрасывает устройство и не перезапускает непрерывное средство чтения.
Комментарии
Чтобы зарегистрировать функцию обратного вызова EvtUsbTargetPipeReadersFailed , драйвер должен поместить адрес функции в структуру WDF_USB_CONTINUOUS_READER_CONFIG . Сведения о добавлении этого указателя функции см. в разделе Примечания WDF_USB_CONTINUOUS_READER_CONFIG_INIT.
Если драйвер создал непрерывное средство чтения для USB-канала, платформа вызывает функцию обратного вызова EvtUsbTargetPipeReadersFailed драйвера, если целевой объект ввода-вывода драйвера сообщает об ошибке при выполнении запроса на чтение. (Если целевой объект ввода-вывода успешно завершает запрос, платформа вызывает функцию обратного вызова EvtUsbTargetPipeReadComplete драйвера.)
Прежде чем платформа вызовет функцию обратного вызова EvtUsbTargetPipeReadersFailed драйвера, она пытается отменить все выполняемые запросы на чтение. Запросы на чтение не выполняются, когда платформа вызывает функцию обратного вызова EvtUsbTargetPipeReadersFailed . Платформа не ставит в очередь дополнительные запросы на чтение до тех пор, пока функция обратного вызова EvtUsbTargetPipeReadersFailed не вернет.
Сведения о том, как платформа синхронизирует вызовы функции обратного вызова EvtUsbTargetPipeReadersFailed с вызовами других функций обратного вызова, см. в разделе Примечания статьи EvtUsbTargetPipeReadComplete.
Функция обратного вызова EvtUsbTargetPipeReadersFailed не должна вызывать WdfIoTargetStop , чтобы остановить usb-объект непрерывного чтения. (На самом деле вызов WdfIoTargetStop в функции обратного вызова EvtUsbTargetPipeReadersFailed вызывает взаимоблокировку.) Кроме того, функция обратного вызова не должна вызывать WdfIoTargetStart для перезапуска непрерывного средства чтения. Вместо этого платформа перезапускает средство чтения, если функция обратного вызова возвращает значение TRUE. Дополнительные сведения о том, когда следует вызывать WdfIoTargetStart и WdfIoTargetStop для непрерывного чтения, см. в статье Работа с USB-каналами.
Если драйвер не предоставляет функцию обратного вызова EvtUsbTargetPipeReadersFailed и целевой объект ввода-вывода драйвера сообщает об ошибке, платформа сбрасывает USB-канал и перезапускает непрерывное средство чтения.
Дополнительные сведения о функции обратного вызова EvtUsbTargetPipeReadersFailed и целевых объектах ввода-вывода USB см. в разделе Целевые объекты ввода-вывода USB.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfusb.h (включая Wdf.h) |
IRQL | PASSIVE_LEVEL |