структура 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. Затем можно поэкспериментировать с более высокими значениями, используя те же тесты. Драйвер, для которого может потребоваться более высокое значение, — это драйвер для устройства с высокой частотой прерываний, где данные могут быть потеряны, если прерывания не обслуживаются быстро.
Требования
Требование | Значение |
---|---|
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfusb.h (включая Wdfusb.h) |