Поделиться через


структура SERCX2_SYSTEM_DMA_RECEIVE_CONFIG (sercx.h)

Структура SERCX2_SYSTEM_DMA_RECEIVE_CONFIG содержит сведения, которые версии 2 расширения последовательной платформы (SerCx2) используются для настройки нового объекта system-DMA-receive.

Синтаксис

typedef struct _SERCX2_SYSTEM_DMA_RECEIVE_CONFIG {
  ULONG                                                      Size;
  size_t                                                     MaximumTransferLength;
  size_t                                                     MinimumTransactionLength;
  ULONG                                                      DmaAlignment;
  ULONG                                                      MaximumScatterGatherFragments;
  DMA_WIDTH                                                  DmaWidth;
  PHYSICAL_ADDRESS                                           DeviceAddress;
  PCM_PARTIAL_RESOURCE_DESCRIPTOR                            DmaDescriptor;
  ULONG                                                      MinimumTransferUnitOverride;
  BOOLEAN                                                    Exclusive;
  PFN_SERCX2_SYSTEM_DMA_RECEIVE_INITIALIZE_TRANSACTION       EvtSerCx2SystemDmaReceiveInitializeTransaction;
  PFN_SERCX2_SYSTEM_DMA_RECEIVE_CLEANUP_TRANSACTION          EvtSerCx2SystemDmaReceiveCleanupTransaction;
  PFN_SERCX2_SYSTEM_DMA_RECEIVE_CONFIGURE_DMA_CHANNEL        EvtSerCx2SystemDmaReceiveConfigureDmaChannel;
  PFN_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveEnableNewDataNotification;
  PFN_SERCX2_SYSTEM_DMA_RECEIVE_CANCEL_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveCancelNewDataNotification;
} SERCX2_SYSTEM_DMA_RECEIVE_CONFIG, *PSERCX2_SYSTEM_DMA_RECEIVE_CONFIG;

Члены

Size

Размер этой структуры в байтах. Метод SerCx2SystemDmaReceiveCreate использует этот элемент для определения версии структуры, которую использует вызывающий объект. Размер этой структуры может измениться в будущих версиях файла заголовка Sercx.h.

MaximumTransferLength

Максимальный размер по умолчанию в байтах, который последовательный контроллер может обрабатывать в одной системной передаче DMA. Если размер буфера в запросе на чтение (IRP_MJ_READ) превышает этот максимальный размер, SerCx2 использует несколько передач DMA для обработки запроса и ограничивает каждую передачу до максимальной длины.

MinimumTransactionLength

Минимальная длина транзакции в байтах для транзакции получения системы DMA. Если длина буфера в запросе на чтение меньше этой минимальной длины, SerCx2 использует программируемый ввод-вывод (PIO) для транзакции.

DmaAlignment

Требование выравнивания DMA. Указывает, как начальный адрес передачи в транзакции приема системы DMA должен быть выровнен в памяти. Задайте этому элементу соответствующую константу FILE_XXX_ALIGNMENT в файле заголовка Wdm.h. Например, FILE_WORD_ALIGNMENT указывает, что начальный адрес DMA должен быть выровнен по двухбайтовой границе в памяти, FILE_LONG_ALIGNMENT указывает, что адрес должен быть выровнен по четырехбайтовой границе и т. д. SerCx2 не поддерживает FILE_BYTE_ALIGNMENT. Минимальная единица передачи (MTU) адаптера DMA системы должна быть больше или равна требуемому выравниванию. Например, если MTU составляет четыре байта, DmaAlignment должно быть не менее FILE_LONG_ALIGNMENT.

MaximumScatterGatherFragments

Максимальное количество фрагментов буфера, которые можно указать в списке точечной или сборной для передачи DMA в транзакции получения системы-DMA.

DmaWidth

Ширина регистра данных по адресу, указанному DeviceAddress. Возможные значения: Width8Bits, Width16Bits, Width32Bitsи Width64Bits.

DeviceAddress

Преобразованный адрес, из которого передается контроллер DMA. Дополнительные сведения см. в описании элемента DeviceAddress в WDF_DMA_SYSTEM_PROFILE_CONFIG.

DmaDescriptor

Указатель на структуру CM_PARTIAL_RESOURCE_DESCRIPTOR, описывающую системный ресурс DMA, используемый для получения транзакций. Драйвер последовательного контроллера получает эту структуру из списка необработанных ресурсов, который он получает в EvtDevicePrepareHardware обратном вызове, который запускает последовательный контроллер.

MinimumTransferUnitOverride

Переопределение значения, используемого вместо минимальной единицы передачи по умолчанию. Число байтов, указанных элементом в списке точечной или сборной, должно быть целым числом минимальной единицы передачи. Значение нуля указывает, что следует использовать минимальную единицу передачи по умолчанию. Дополнительные сведения см. в описании элемента MinimumTransferUnit в DMA_ADAPTER_INFO_V1.

Exclusive

Следует ли использовать транзакции получения системы DMA исключительно для обработки запросов на запись (IRP_MJ_READ) . Задайте значение TRUE, чтобы указать, что запросы на чтение должны использовать исключительно транзакции получения системы DMA. Установите значение FALSE, чтобы указать, что запросы на чтение могут использовать сочетание транзакций получения системных данных DMA и транзакций получения PIO..

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

Если Монопольная TRUE, членыMinimumTransferUnitOverride, DmaAlignmentи MinimumTransactionLength должны быть ноль.

Независимо от значения этого члена, транзакции piO-receive используются для сохранения любых непрочитанных данных в получающем FIFO, прежде чем последовательный контроллер выходит из состояния питания устройства D0, чтобы войти в состояние низкой мощности.

EvtSerCx2SystemDmaReceiveInitializeTransaction

Указатель на функцию обратного вызова событий, реализованную драйвером, EvtSerCx2SystemDmaReceiveInitializeTransaction. Этот член является необязательным и может быть установлен null, чтобы указать, что драйвер не реализует функцию.

EvtSerCx2SystemDmaReceiveCleanupTransaction

Указатель на функцию обратного вызова событий, реализованную драйвером, EvtSerCx2SystemDmaReceiveCleanupTransaction функцию обратного вызова событий. Этот член является необязательным и может быть установлен null, чтобы указать, что драйвер не реализует функцию.

EvtSerCx2SystemDmaReceiveConfigureDmaChannel

Указатель на функцию обратного вызова событий, реализованную драйвером EvtSerCx2SystemDmaReceiveConfigureDmaChannel. Этот член является необязательным и может быть установлен null, чтобы указать, что драйвер не реализует функцию.

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

Указатель на функцию обратного вызова событий, реализованную драйвером, EvtSerCx2SystemDmaReceiveEnableNewDataNotification функции обратного вызова событий. Этот член является необязательным и может быть установлен null, чтобы указать, что драйвер не реализует функцию. Однако драйвер, реализующий эту функцию, также должен реализовать функцию EvtSerCx2SystemDmaReceiveCancelNewDataNotification.

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

Указатель на функцию обратного вызова событий, реализованную драйвером, EvtSerCx2SystemDmaReceiveCancelNewDataNotification функции обратного вызова событий. Этот член является необязательным и может быть установлен null, чтобы указать, что драйвер не реализует функцию. Однако драйвер, реализующий эту функцию, также должен реализовать функцию EvtSerCx2SystemDmaReceiveEnableNewDataNotification.

Замечания

Метод SerCx2SystemDmaReceiveCreate принимает указатель на структуру SERCX2_SYSTEM_DMA_RECEIVE_CONFIG в качестве входного параметра. Перед вызовом SerCx2SystemDmaReceiveCreateвызовите функцию SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT или SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION, чтобы инициализировать эту структуру.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается начиная с Windows 8.1.
заголовка sercx.h

См. также

CM_PARTIAL_RESOURCE_DESCRIPTOR

EvtDevicePrepareHardware

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

EvtSerCx2SystemDmaReceiveCleanupTransaction

EvtSerCx2SystemDmaReceiveConfigureDmaChannel

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

EvtSerCx2SystemDmaReceiveInitializeTransaction

IRP_MJ_READ

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION

SerCx2SystemDmaReceiveCreate

WdfDmaEnablerSetMaximumScatterGatherElements