共用方式為


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

system-DMA-receive 交易的最小長度,以位元組為單位。 如果讀取要求中的緩衝區長度小於這個最小長度,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

在 system-DMA-receive 交易中,可在 DMA 傳輸的散佈/收集清單中指定的最大緩衝區片段數目。

DmaWidth

位於 DeviceAddress 所指定地址的數據快取器寬度。 可能的值為 Width8BitsWidth16BitsWidth32Bits 和 Width64Bits

DeviceAddress

DMA 控制器從中傳輸的轉譯位址。 如需詳細資訊,請參閱 WDF_DMA_SYSTEM_PROFILE_CONFIG 中的 DeviceAddress 成員描述。

DmaDescriptor

CM_PARTIAL_RESOURCE_DESCRIPTOR 結構的指標,描述要用於接收交易的系統 DMA 資源。 序列控制器驅動程式會從啟動序列控制器的 EvtDevicePrepareHardware 回呼中,從原始資源清單中取得此結構。

MinimumTransferUnitOverride

用來取代預設最小傳輸單位的覆寫值。 散佈/收集清單中元素所指定的位元元數目必須是最小傳輸單位的整數倍數。 值為零表示應該使用預設最小傳輸單位。 如需詳細資訊,請參閱 DMA_ADAPTER_INFO_V1 中的 MinimumTransferUnit 成員描述。

Exclusive

是否以獨佔方式使用 system-DMA-receive 交易來處理寫入 (IRP_MJ_READ) 要求。 設定為 TRUE ,表示讀取要求應該獨佔使用 system-DMA-receive 交易。 設定為 FALSE ,表示讀取要求可以使用 system-DMA-receive 交易和 PIO-receive 交易的組合。

只有當 system-DMA-receive 交易的最小傳輸單位是一個字節、最小交易長度為一個字節,而且交易的讀取緩衝區可以在記憶體中的任何位元組界限上啟動時,才會將此成員設定為 TRUE

如果 ExclusiveTRUE則 MinimumTransferUnitOverrideDmaAlignmentMinimumTransactionLength 成員必須為零。

不論此成員的值為何,PIO 接收交易都會用來在序列控制器結束 D0 裝置電源狀態以進入低電源狀態之前,將接收 FIFO 中的任何未讀取資料儲存在接收 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_INITSERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION 函式來初始化這個結構。

規格需求

需求
最低支援的用戶端 從 Windows 8.1 開始支援。
標頭 sercx.h

另請參閱

CM_PARTIAL_RESOURCE_DESCRIPTOR

EvtDevicePrepareHardware

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

EvtSerCx2SystemDmaReceiveCleanupTransaction

EvtSerCx2SystemDmaReceiveConfigureDmaChannel

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

EvtSerCx2SystemDmaReceiveInitializeTransaction

IRP_MJ_READ

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION

SerCx2SystemDmaReceiveCreate

WdfDmaEnablerSetMaximumScatterGatherElements