структура WDF_USB_CONTINUOUS_READER_CONFIG (wdfusb.h)

[Относится к KMDF и UMDF]

Структура WDF_USB_CONTINUOUS_READER_CONFIG содержит сведения, которые платформа использует для настройки непрерывного чтения для USB-канала.

Синтаксис

typedef struct _WDF_USB_CONTINUOUS_READER_CONFIG {
  ULONG                                 Size;
  size_t                                TransferLength;
  size_t                                HeaderLength;
  size_t                                TrailerLength;
  UCHAR                                 NumPendingReads;
  PWDF_OBJECT_ATTRIBUTES                BufferAttributes;
  PFN_WDF_USB_READER_COMPLETION_ROUTINE EvtUsbTargetPipeReadComplete;
  WDFCONTEXT                            EvtUsbTargetPipeReadCompleteContext;
  PFN_WDF_USB_READERS_FAILED            EvtUsbTargetPipeReadersFailed;
} WDF_USB_CONTINUOUS_READER_CONFIG, *PWDF_USB_CONTINUOUS_READER_CONFIG;

Члены

Size

Размер данной структуры (в байтах).

TransferLength

Максимальная длина (в байтах) данных, которые могут быть получены с устройства.

HeaderLength

Смещение (в байтах) в буфере, который получает данные с устройства. Платформа будет хранить данные с устройства в буфере чтения, начиная со значения смещения. Другими словами, это пространство предшествует пространству размера TransferLength, в котором платформа хранит данные с устройства.

TrailerLength

Длина буферного пространства в байтах. Это пространство следует за пространством размера TransferLength, в котором платформа хранит данные с устройства.

NumPendingReads

Количество запросов на чтение, которые платформа будет ставить в очередь для получения данных от целевого объекта ввода-вывода. Если это значение равно нулю, платформа использует количество запросов на чтение по умолчанию. Если указанное значение больше допустимого максимума, платформа использует разрешенное максимальное значение. Дополнительные сведения об элементе NumPendingReads см. в следующем разделе Примечаний.

BufferAttributes

Структура WDF_OBJECT_ATTRIBUTES , указывающая атрибуты объекта для объекта памяти платформы, создаваемого платформой для каждого запроса на чтение. Этот элемент может иметь значение NULL. Невозможно задать элемент ParentObject структуры WDF_OBJECT_ATTRIBUTES.

EvtUsbTargetPipeReadComplete

Указатель на функцию обратного вызова EvtUsbTargetPipeReadComplete драйвера.

EvtUsbTargetPipeReadCompleteContext

Нетипизированный указатель на определяемые драйвером сведения о контексте, которые платформа передает функции обратного вызова EvtUsbTargetPipeReadComplete драйвера.

EvtUsbTargetPipeReadersFailed

Указатель на функцию обратного вызова EvtUsbTargetPipeReadersFailed драйвера. Этот указатель является необязательным и может иметь значение NULL. Дополнительные сведения об этом параметре см. в разделе Примечания статьи WdfUsbTargetPipeConfigContinuousReader.

Комментарии

Структура WDF_USB_CONTINUOUS_READER_CONFIG используется в качестве входных данных для метода WdfUsbTargetPipeConfigContinuousReader .

Чтобы инициализировать структуру WDF_USB_CONTINUOUS_READER_CONFIG, драйвер должен вызвать WDF_USB_CONTINUOUS_READER_CONFIG_INIT.

При выборе значения для элемента NumPendingReads используйте следующие рекомендации:

  • Задайте для NumPendingReads значение 0, если вы хотите, чтобы драйвер использовал значение по умолчанию платформы.

    Значение по умолчанию больше 1 и было определено, чтобы обеспечить достаточно высокую производительность для многих устройств во многих конфигурациях процессора.

  • Задайте для NumPendingReads значение 1, если важно, чтобы драйвер получал буферы данных в точном порядке, в который устройство доставляет данные.
  • Задайте число NumPendingReads , соответствующее требованиям к производительности устройства, на основе тщательного измерения производительности.

    Сначала протестируйте устройство со значением по умолчанию (0) для NumPendingReads. Тесты должны включать различные конфигурации оборудования, в том числе различные типы и количество процессоров, а также различные USB-контроллеры узлов и конфигурации USB. Затем можно поэкспериментировать с более высокими значениями, используя те же тесты. Драйвер, для которого может потребоваться более высокое значение, — это драйвер для устройства с высокой частотой прерываний, где данные могут быть потеряны, если прерывания не обслуживаются быстро.

Слишком большое значение NumPendingReads может замедлить производительность системы. Следует использовать наименьшее значение, соответствующее вашим требованиям к производительности. Как правило, значения, превышающие 3 или 4, не повышают пропускную способность данных. Но более высокие значения могут снизить задержку или вероятность отсутствия данных на высокочастотном канале.

Требования

Требование Значение
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfusb.h (включая Wdfusb.h)

См. также раздел

EvtUsbTargetPipeReadComplete

EvtUsbTargetPipeReadersFailed

WDF_OBJECT_ATTRIBUTES

WDF_USB_CONTINUOUS_READER_CONFIG_INIT

WdfUsbTargetPipeConfigContinuousReader