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


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

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

Синтаксис

typedef struct _SERCX2_SYSTEM_DMA_TRANSMIT_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_TRANSMIT_INITIALIZE_TRANSACTION EvtSerCx2SystemDmaTransmitInitializeTransaction;
  PFN_SERCX2_SYSTEM_DMA_TRANSMIT_CLEANUP_TRANSACTION    EvtSerCx2SystemDmaTransmitCleanupTransaction;
  PFN_SERCX2_SYSTEM_DMA_TRANSMIT_CONFIGURE_DMA_CHANNEL  EvtSerCx2SystemDmaTransmitConfigureDmaChannel;
  PFN_SERCX2_SYSTEM_DMA_TRANSMIT_DRAIN_FIFO             EvtSerCx2SystemDmaTransmitDrainFifo;
  PFN_SERCX2_SYSTEM_DMA_TRANSMIT_CANCEL_DRAIN_FIFO      EvtSerCx2SystemDmaTransmitCancelDrainFifo;
  PFN_SERCX2_SYSTEM_DMA_TRANSMIT_PURGE_FIFO             EvtSerCx2SystemDmaTransmitPurgeFifo;
} SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG, *PSERCX2_SYSTEM_DMA_TRANSMIT_CONFIG;

Члены

Size

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

MaximumTransferLength

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

MinimumTransactionLength

Минимальная длина в байтах транзакции передачи system-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

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

Exclusive

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

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

Если монопольнаяtrue, MinimumTransferUnitOverride, выравниванияи элементов MinimumTransactionLength должно быть равно нулю.

EvtSerCx2SystemDmaTransmitInitializeTransaction

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

EvtSerCx2SystemDmaTransmitCleanupTransaction

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

EvtSerCx2SystemDmaTransmitConfigureDmaChannel

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

EvtSerCx2SystemDmaTransmitDrainFifo

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

EvtSerCx2SystemDmaTransmitCancelDrainFifo

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

EvtSerCx2SystemDmaTransmitPurgeFifo

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

Замечания

Метод SerCx2SystemDmaTransmitCreate принимает указатель на структуру SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG в качестве входного параметра. Перед вызовом SerCx2SystemDmaTransmitCreateвызовите функцию SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT для инициализации этой структуры.

Требования

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

См. также

DMA_ADAPTER_INFO_V1

EvtSerCx2SystemDmaTransmitCancelDrainFifo

EvtSerCx2SystemDmaTransmitCleanupTransaction

EvtSerCx2SystemDmaTransmitConfigureDmaChannel

EvtSerCx2SystemDmaTransmitDrainFifo

EvtSerCx2SystemDmaTransmitInitializeTransaction

EvtSerCx2SystemDmaTransmitPurgeFifo

IRP_MJ_WRITE

SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT

SerCx2SystemDmaTransmitCreate

WdfDmaEnablerSetMaximumScatterGatherElements