Метод 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.
Возвращаемое значение
Никакой
Замечания
Чтобы зарегистрировать функцию обратного вызова IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion функции обратного вызова, драйвер должен предоставить указатель на интерфейс драйвера IUsbTargetPipeContinuousReaderCallbackReadComplet e при вызове IWDFUsbTargetPipe2::ConfigureContinuousReader.
Если драйвер создал непрерывное средство чтения для USB-канала, платформа вызывает функцию обратного вызова драйвера OnReaderCompletion каждый раз, когда целевой объект ввода-вывода драйвера успешно завершает запрос на чтение. Если целевой объект ввода-вывода не завершает запрос, платформа вызывает IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure функцию обратного вызова.
Чтобы получить доступ к буферу, который содержит данные, считываемые с устройства, драйвер может вызвать IWDFMemory::GetDataBuffer. Платформа записывает данные в буфер после заголовка, определенного параметром HeaderLengthIWDFUsbTargetPipe2::ConfigureContinuousReader. Обратите внимание, что указатель, который IWDFMemory::GetDataBuffer возвращает точки в начале заголовка, но параметр OnReaderCompletionфункции обратного вызова NumBytesTransferred не включает длину заголовка.
По умолчанию платформа удаляет объект памяти буфера после возврата функции обратного вызова 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 (include Wudfusb.h) |
См. также
IUsbTargetPipeContinuousReaderCallbackReadComplete
IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure