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 对事务使用编程 I/O (PIO)。
DmaAlignment
DMA 对齐要求。 指定如何在内存中对齐 system-DMA-receive 事务中传输的起始地址。 将此成员设置为 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指定的地址处的数据寄存器的宽度。 可能的值为 Width8Bits、Width16Bits、Width32Bits和 Width64Bits。
DeviceAddress
DMA 控制器从中传输的已转换地址。 有关详细信息,请参阅 WDF_DMA_SYSTEM_PROFILE_CONFIG中的 DeviceAddress 成员的说明。
DmaDescriptor
指向用于接收事务的系统 DMA 资源的 CM_PARTIAL_RESOURCE_DESCRIPTOR 结构的指针。 串行控制器驱动程序从它在启动串行控制器的 EvtDevicePrepareHardware 回调中从它接收的原始资源列表中获取此结构。
MinimumTransferUnitOverride
替代值,用于代替默认最小传输单元。 散点/收集列表中元素指定的字节数必须是最小传输单元的整数倍数。 值为零表示应使用默认最小传输单位。 有关详细信息,请参阅 DMA_ADAPTER_INFO_V1中 MinimumTransferUnit 成员的说明。
Exclusive
是否以独占方式使用 system-DMA 接收事务来处理写入(IRP_MJ_READ)请求。 设置为 TRUE 以指示读取请求应以独占方式使用 system-DMA-receive 事务。 设置为 FALSE,以指示读取请求可以使用 system-DMA-receive 事务和 PIO 接收事务的组合。
仅当系统-DMA 接收事务的最小传输单元为一个字节时,将此成员设置为 TRUE,最小事务长度为一个字节,并且事务的读取缓冲区可以在内存中的任何字节边界上启动。
如果 排他TRUE,则 MinimumTransferUnitOverride、DmaAlignment,MinimumTransactionLength 成员必须为零。
无论此成员的值如何,PIO 接收事务都用于在串行控制器退出 D0 设备电源状态进入低功率状态之前在接收 FIFO 中保存任何未读数据。
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
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
EvtSerCx2SystemDmaReceiveCleanupTransaction
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
EvtSerCx2SystemDmaReceiveInitializeTransaction
SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT