функция обратного вызова 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 (include Wdf.h) |
IRQL | PASSIVE_LEVEL |