структура 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 |
См. также
EvtSerCx2SystemDmaTransmitCancelDrainFifo
EvtSerCx2SystemDmaTransmitCleanupTransaction
EvtSerCx2SystemDmaTransmitConfigureDmaChannel
EvtSerCx2SystemDmaTransmitDrainFifo
EvtSerCx2SystemDmaTransmitInitializeTransaction
EvtSerCx2SystemDmaTransmitPurgeFifo