Метод IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure (wudfusb.h)
[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. В UMDF 1 новые функции не добавляются, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с UMDF.]
Функция обратного вызова события OnReaderFailure драйвера информирует драйвер о том, что непрерывное средство чтения сообщило об ошибке при обработке запроса на чтение.
Синтаксис
BOOL OnReaderFailure(
[in] IWDFUsbTargetPipe *pPipe,
[in] HRESULT hrStatus
);
Параметры
[in] pPipe
Указатель на интерфейс IWDFUsbTargetPipe для USB-канала, в котором драйвер включил непрерывное средство чтения.
[in] hrStatus
Значение состояния типа HRESULT, возвращаемое целевым объектом ввода-вывода USB-канала.
Возвращаемое значение
Функция обратного вызова события OnReaderFailure должна возвращать логическое значение. Если возвращаемое значение равно TRUE, платформа сбрасывает USB-канал, а затем перезапускает непрерывное средство чтения. Если функция обратного вызова возвращает значение FALSE, платформа не сбрасывает устройство и не перезапускает непрерывное средство чтения.
Комментарии
Чтобы зарегистрировать функцию обратного вызова OnReaderFailure , драйвер должен предоставить указатель на интерфейс IUsbTargetPipeContinuousReaderCallbackReadersFailed драйвера при вызове IWDFUsbTargetPipe2::ConfigureContinuousReader.
Если драйвер создал непрерывное средство чтения для USB-канала, платформа вызывает функцию обратного вызова OnReaderFailure драйвера, если целевой объект ввода-вывода драйвера сообщает об ошибке при выполнении запроса на чтение. (Если целевой объект ввода-вывода успешно завершает запрос, платформа вызывает функцию обратного вызова IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion .)
Прежде чем платформа вызовет функцию обратного вызова OnReaderFailure драйвера, она пытается отменить все выполняемые запросы на чтение. Запросы на чтение не выполняются, когда платформа вызывает функцию обратного вызова OnReaderFailure . Платформа не ставит в очередь дополнительные запросы на чтение до тех пор, пока функция обратного вызова OnReaderFailure не вернет.
Сведения о том, как платформа синхронизирует вызовы функции обратного вызова OnReaderFailure с вызовами других функций обратного вызова, см. в разделе Примечания статьи IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion.
Функция обратного вызова OnReaderFailure не должна вызывать IWDFIoTargetStateManagement::Stop , чтобы остановить usb-объект непрерывного чтения. (На самом деле вызов IWDFIoTargetStateManagement::Stop в функции обратного вызова OnReaderFailure вызывает взаимоблокировку.) Кроме того, функция обратного вызова не должна вызывать IWDFIoTargetStateManagement::Start для перезапуска непрерывного средства чтения. Вместо этого платформа перезапускает средство чтения, если функция обратного вызова возвращает значение TRUE. Дополнительные сведения о том, когда следует вызывать IWDFIoTargetStateManagement::Start и IWDFIoTargetStateManagement::Stop для непрерывного чтения, см. в статье Работа с USB-каналами в UMDF.
Если драйвер не предоставляет функцию обратного вызова OnReaderFailure и целевой объект ввода-вывода драйвера сообщает об ошибке, платформа сбрасывает USB-канал и перезапускает непрерывное средство чтения.
Дополнительные сведения о функции обратного вызова OnReaderFailure и целевых объектах USB-ввода-вывода см. в разделе Обработка целевого объекта ввода-вывода USB.
Требования
Требование | Значение |
---|---|
Дата окончания поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
Целевая платформа | Персональный компьютер |
Минимальная версия UMDF | 1,9 |
Верхняя часть | wudfusb.h (включая Wudfusb.h) |
См. также раздел
IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion