SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG结构(sercx.h)

SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG 结构包含串行框架扩展版本 2(SerCx2)用于配置新的系统-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

系统 DMA 传输事务的最小长度(以字节为单位)。 如果写入请求中的缓冲区长度小于此最小长度,则 SerCx2 对事务使用编程 I/O (PIO)。

DmaAlignment

DMA 对齐要求。 指定如何在内存中对齐 system-DMA 传输事务中的传输起始地址。 将此成员设置为 Wdm.h 头文件中的相应 FILE_XXX_ALIGNMENT 常量。 例如,FILE_WORD_ALIGNMENT指示起始 DMA 地址必须与内存中的双字节边界对齐,FILE_LONG_ALIGNMENT指示该地址必须与四字节边界对齐,依此表示。 SerCx2 不支持FILE_BYTE_ALIGNMENT。 系统 DMA 适配器的最小传输单元(MTU)应大于或等于所需的对齐方式。 例如,如果 MTU 为四个字节,DmaAlignment 必须至少FILE_LONG_ALIGNMENT。

MaximumScatterGatherFragments

可以在分散/收集列表中为系统-DMA 传输事务中的 DMA 传输指定的最大缓冲区片段数。

DmaWidth

DeviceAddress指定的地址处的数据寄存器的宽度。 可能的值为 Width8BitsWidth16BitsWidth32BitsWidth64Bits

DeviceAddress

DMA 控制器将数据传输到的已转换设备地址。 有关详细信息,请参阅 WDF_DMA_SYSTEM_PROFILE_CONFIG中的 DeviceAddress 成员的说明。

DmaDescriptor

指向描述用于传输事务的系统 DMA 资源的 CM_PARTIAL_RESOURCE_DESCRIPTOR 结构的指针。 串行控制器驱动程序从它在启动串行控制器的 EvtDevicePrepareHardware 回调中从它接收的原始资源列表中获取此结构。

MinimumTransferUnitOverride

替代值,用于代替默认最小传输单元。 散点/收集列表中元素指定的字节数必须是最小传输单元的整数倍数。 值为零表示应使用默认最小传输单位。 有关默认最小传输单位的详细信息,请参阅 DMA_ADAPTER_INFO_V1

Exclusive

是否以独占方式使用 system-DMA 传输事务来处理写入(IRP_MJ_WRITE)请求。 设置为 TRUE,指示写入请求应以独占方式使用 system-DMA 传输事务。 设置为 FALSE,指示写入请求可以使用系统-DMA 传输事务和 PIO 传输事务的组合。

仅当系统-DMA 传输事务的最小传输单元为一个字节时,将此成员设置为 TRUE,最小事务长度为一个字节,并且事务的写入缓冲区可以在内存中的任何字节边界上启动。

如果 排他TRUE,则 MinimumTransferUnitOverrideAlignmentMinimumTransactionLength 成员必须为零。

EvtSerCx2SystemDmaTransmitInitializeTransaction

指向驱动程序实现 EvtSerCx2SystemDmaTransmitInitializeTransaction 事件回调函数的指针。 此成员是可选的,可以设置为 NULL,以指示驱动程序未实现该函数。

EvtSerCx2SystemDmaTransmitCleanupTransaction

指向驱动程序实现 EvtSerCx2SystemDmaTransmitCleanupTransaction 事件回调函数的指针。 此成员是可选的,可以设置为 NULL,以指示驱动程序未实现该函数。

EvtSerCx2SystemDmaTransmitConfigureDmaChannel

指向驱动程序实现 EvtSerCx2SystemDmaTransmitConfigureDmaChannel 事件回调函数的指针。 此成员是可选的,可以设置为 NULL,以指示驱动程序未实现该函数。

EvtSerCx2SystemDmaTransmitDrainFifo

指向驱动程序实现 EvtSerCx2SystemDmaTransmitDrainFifo 事件回调函数的指针。 此成员是可选的,可以设置为 NULL,以指示驱动程序未实现该函数。 但是,实现此函数的驱动程序还必须实现 EvtSerCx2SystemDmaTransmitCancelDrainFifoEvtSerCx2SystemDmaTransmitPurgeFifo 函数。

EvtSerCx2SystemDmaTransmitCancelDrainFifo

指向驱动程序实现 EvtSerCx2SystemDmaTransmitCancelDrainFifo 事件回调函数的指针。 此成员是可选的,可以设置为 NULL,以指示驱动程序未实现该函数。 但是,实现此函数的驱动程序还必须实现 EvtSerCx2SystemDmaTransmitDrainFifoEvtSerCx2SystemDmaTransmitPurgeFifo 函数。

EvtSerCx2SystemDmaTransmitPurgeFifo

指向驱动程序实现 EvtSerCx2SystemDmaTransmitPurgeFifo 事件回调函数的指针。 此成员是可选的,可以设置为 NULL,以指示驱动程序未实现该函数。 但是,实现此函数的驱动程序还必须实现 EvtSerCx2SystemDmaTransmitDrainFifoEvtSerCx2SystemDmaTransmitCancelDrainFifo 函数。

言论

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