SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG 結構 (sercx.h)
SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG 結構包含第 2 版序列架構延伸模組 (SerCx2) 用來設定新的 system-DMA-transmit 對象的資訊。
語法
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 所指定地址的數據快取器寬度。 可能的值為 Width8Bits、 Width16Bits、 Width32Bits 和 Width64Bits。
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 ,表示寫入要求可以使用 system-DMA 傳輸交易和 PIO 傳輸交易的組合。
只有當系統-DMA 傳輸交易的最小傳輸單位為一個字節、最小交易長度為一個字節時,交易的寫入緩衝區才能在記憶體中的任何位元組界限上啟動時,才會將此成員設定為 TRUE 。
如果 Exclusive 為 TRUE,MinimumTransferUnitOverride、Alignment 和 MinimumTransactionLength 成員必須是零。
EvtSerCx2SystemDmaTransmitInitializeTransaction
驅動程序實作 EvtSerCx2SystemDmaTransmitInitializeTransaction 事件回呼callback 函式的指標。 這個成員是選擇性的,而且可以設定為 NULL ,表示驅動程式不會實作函式。
EvtSerCx2SystemDmaTransmitCleanupTransaction
驅動程序實作 EvtSerCx2SystemDmaTransmitCleanupTransaction 事件回呼函式的指標。 這個成員是選擇性的,而且可以設定為 NULL ,表示驅動程式不會實作函式。
EvtSerCx2SystemDmaTransmitConfigureDmaChannel
驅動程序實作 EvtSerCx2SystemDmaTransmitConfigureDmaChannel 事件回呼函式的指標。 這個成員是選擇性的,而且可以設定為 NULL ,表示驅動程式不會實作函式。
EvtSerCx2SystemDmaTransmitDrainFifo
驅動程序實作 EvtSerCx2SystemDmaTransmitDrainFifo 事件回呼函式的指標。 這個成員是選擇性的,而且可以設定為 NULL ,表示驅動程式不會實作函式。 不過,實作此函式的驅動程式也必須實作 EvtSerCx2SystemDmaTransmitCancelDrainFifo 和 EvtSerCx2SystemDmaTransmitPurgeFifo 函式。
EvtSerCx2SystemDmaTransmitCancelDrainFifo
驅動程序實作 EvtSerCx2SystemDmaTransmitCancelDrainFifo 事件回呼函式的指標。 這個成員是選擇性的,而且可以設定為 NULL ,表示驅動程式不會實作函式。 不過,實作此函式的驅動程式也必須實作 EvtSerCx2SystemDmaTransmitDrainFifo 和 EvtSerCx2SystemDmaTransmitPurgeFifo 函式。
EvtSerCx2SystemDmaTransmitPurgeFifo
驅動程序實作 EvtSerCx2SystemDmaTransmitPurgeFifo 事件回呼函式的指標。 這個成員是選擇性的,而且可以設定為 NULL ,表示驅動程式不會實作函式。 不過,實作此函式的驅動程式也必須實作 EvtSerCx2SystemDmaTransmitDrainFifo 和 EvtSerCx2SystemDmaTransmitCancelDrainFifo 函式。
備註
SerCx2SystemDmaTransmitCreate 方法接受SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG結構的指標做為輸入參數。 呼叫 SerCx2SystemDmaTransmitCreate 之前,請先呼叫 SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT 函式來初始化這個結構。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 8.1 開始支援。 |
標頭 | sercx.h |
另請參閱
EvtSerCx2SystemDmaTransmitCancelDrainFifo
EvtSerCx2SystemDmaTransmitCleanupTransaction
EvtSerCx2SystemDmaTransmitConfigureDmaChannel
EvtSerCx2SystemDmaTransmitDrainFifo
EvtSerCx2SystemDmaTransmitInitializeTransaction
EvtSerCx2SystemDmaTransmitPurgeFifo
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應