Метод IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion (wudfusb.h)
[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. В UMDF 1 новые функции не добавляются, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с UMDF.]
Функция обратного вызова события OnReaderCompletion драйвера сообщает драйверу, что непрерывное средство чтения успешно завершило запрос на чтение.
Синтаксис
void OnReaderCompletion(
[in] IWDFUsbTargetPipe *pPipe,
[in] IWDFMemory *pMemory,
[in] SIZE_T NumBytesTransferred,
[in] PVOID Context
);
Параметры
[in] pPipe
Указатель на интерфейс IWDFUsbTargetPipe для USB-канала, в котором драйвер включил непрерывное средство чтения.
[in] pMemory
Указатель на интерфейс IWDFMemory для буфера чтения, содержащего данные, считанные из USB-канала.
[in] NumBytesTransferred
Количество байтов, содержащихся в буфере чтения.
[in] Context
Указатель на предоставленные драйвером контекстные сведения, предоставленные драйвером при вызове IWDFUsbTargetPipe2::ConfigureContinuousReader.
Возвращаемое значение
None
Remarks
Чтобы зарегистрировать функцию обратного вызова IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion , драйвер должен предоставить указатель на интерфейс IUsbTargetPipeContinuousReaderCallbackReadComplete при вызовеIWDFUsbTargetPipe2::ConfigureContinuousReader.
Если драйвер создал непрерывное средство чтения для USB-канала, платформа вызывает функцию обратного вызова OnReaderCompletion драйвера каждый раз, когда целевой объект ввода-вывода драйвера успешно завершает запрос на чтение. Если целевой объект ввода-вывода не завершает запрос, платформа вызывает функцию обратного вызова IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure драйвера.
Чтобы получить доступ к буферу, который содержит данные, считанные с устройства, драйвер может вызвать IWDFMemory::GetDataBuffer. Платформа записывает данные в буфер после заголовка, определенного параметром HeaderLengthобъекта IWDFUsbTargetPipe2::ConfigureContinuousReader. Обратите внимание, что указатель, возвращаемый IWDFMemory::GetDataBuffer, указывает на начало заголовка, но параметр NumBytesTransferred функции обратного вызова OnReaderCompletion не включает длину заголовка.
По умолчанию платформа удаляет объект памяти буфера после возврата функции обратного вызова OnReaderCompletion . Однако может потребоваться, чтобы объект памяти оставался действительным после возврата функции обратного вызова. Например, может потребоваться, чтобы драйвер сохранял указатель интерфейса объекта памяти в контекстном пространстве объекта канала платформы, чтобы драйвер мог обрабатывать содержимое объекта памяти после возврата функции обратного вызова. Чтобы продлить время существования объекта памяти, функция обратного вызова должна вызвать метод IWDFMemory::AddRef буфера. Затем драйвер должен вызвать метод IWDFMemory::Release буфера, чтобы платформа удаляла объект .
Платформа синхронизирует вызовы функций обратного вызова OnReaderCompletion и IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure в соответствии со следующими правилами:
- Эти функции обратного вызова не выполняются одновременно для отдельного USB-канала.
- Если драйвер создает несколько непрерывных модулей чтения для нескольких USB-каналов с несколькими функциями обратного вызова OnReaderCompletion и OnReaderFailure , то несколько функций обратного вызова могут выполняться одновременно.
- Если драйвер указал значение NumPendingReads по умолчанию при вызове IWDFUsbTargetPipe2::ConfigureContinuousReader (или если он указывает значение NumPendingReads , которое больше 1), и если запрос на чтение завершается во время выполнения функции обратного вызова OnReaderCompletion , платформа может вызвать функцию обратного вызова OnReaderCompletion еще раз до возврата функции обратного вызова.
- Платформа не синхронизирует эти функции обратного вызова с другими функциями обратного вызова.
Дополнительные сведения о функции обратного вызова OnReaderCompletion и целевых объектах USB-ввода-вывода см. в разделе Обработка целевого объекта ввода-вывода USB.
Требования
Требование | Значение |
---|---|
Дата окончания поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
Целевая платформа | Персональный компьютер |
Минимальная версия UMDF | 1,9 |
Верхняя часть | wudfusb.h (включая Wudfusb.h) |
См. также раздел
IUsbTargetPipeContinuousReaderCallbackReadComplete
IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure