SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG構造体 (sercx.h)

SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG 構造体には、シリアル フレームワーク拡張機能 (SerCx2) のバージョン 2 が新しいシステム 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

シリアル コントローラーが 1 つのシステム DMA 転送で処理できる既定の最大サイズ (バイト単位)。 書き込み (IRP_MJ_WRITE) 要求のバッファーのサイズがこの最大サイズを超える場合、SerCx2 は複数の DMA 転送を使用して要求を処理し、各転送を最大長に制限します。

MinimumTransactionLength

システム DMA 送信トランザクションの最小長 (バイト単位)。 書き込み要求のバッファーの長さが、この最小長より小さい場合、SerCx2 はトランザクションにプログラミングされた I/O (PIO) を使用します。

DmaAlignment

DMA アラインメント要件。 システム DMA 送信トランザクション内の転送の開始アドレスをメモリ内でどのようにアラインする必要するかを指定します。 このメンバーを Wdm.h ヘッダー ファイル内の適切なFILE_XXX_ALIGNMENT 定数に設定します。 たとえば、FILE_WORD_ALIGNMENTは、開始 DMA アドレスをメモリ内の 2 バイト境界に配置する必要があることを示FILE_LONG_ALIGNMENT、アドレスを 4 バイト境界にアラインする必要があることを示します。 SerCx2 はFILE_BYTE_ALIGNMENTをサポートしていません。 システム DMA アダプターの最小転送単位 (MTU) は、必要なアラインメント以上である必要があります。 たとえば、MTU が 4 バイトの場合、DmaAlignment は少なくともFILE_LONG_ALIGNMENTする必要があります。

MaximumScatterGatherFragments

システム DMA 送信トランザクションの DMA 転送の分散/収集リストで指定できるバッファー フラグメントの最大数。

DmaWidth

DeviceAddressで指定されたアドレスにあるデータ レジスタの幅。 使用できる値は 、width8BitsWidth16BitsWidth32Bits、および Width64Bitsです。

DeviceAddress

DMA コントローラーが転送するデータの転送先となる変換されたデバイス アドレス。 詳細については、WDF_DMA_SYSTEM_PROFILE_CONFIGDeviceAddress メンバーの説明を参照してください。

DmaDescriptor

送信トランザクションに使用するシステム DMA リソースを記述する CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体へのポインター。 シリアル コントローラー ドライバーは、シリアル コントローラーを起動する EvtDevicePrepareHardware コールバックで受信した未加工リソースリストからこの構造体を取得します。

MinimumTransferUnitOverride

既定の最小転送単位の代わりに使用するオーバーライド値。 散布図/収集リスト内の要素によって指定されるバイト数は、最小転送単位の整数倍数である必要があります。 値が 0 の場合は、既定の最小転送単位を使用する必要があることを示します。 デフォルト最小転送単位の詳細については、DMA_ADAPTER_INFO_V1を参照してください。

Exclusive

システム DMA 送信トランザクションを使用して書き込み (IRP_MJ_WRITE) 要求を処理するかどうかを指定します。 書き込み要求でシステム DMA 送信トランザクションのみを使用する必要があることを示すには、TRUE を に設定します。 書き込み要求でシステム DMA 送信トランザクションと PIO 送信トランザクションの組み合わせを使用できることを示す FALSEに設定します。

システム DMA 送信トランザクションの最小転送単位が 1 バイトで、トランザクションの最小長が 1 バイトで、トランザクションの書き込みバッファーがメモリ内の任意のバイト境界で開始できる場合にのみ、このメンバーを TRUE に設定します。

排他 が TRUE場合、MinimumTransferUnitOverrideAlignment、および MinimumTransactionLength メンバー 0 にする必要があります。

EvtSerCx2SystemDmaTransmitInitializeTransaction

EvtSerCx2SystemDmaTransmitInitializeTransaction イベント コールバック関数 ドライバー実装へのポインター。 このメンバーは省略可能であり、ドライバーが関数を実装していないことを示す 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

関連項目

DMA_ADAPTER_INFO_V1

EvtSerCx2SystemDmaTransmitCancelDrainFifo の

EvtSerCx2SystemDmaTransmitCleanupTransaction の

EvtSerCx2SystemDmaTransmitConfigureDmaChannel の

EvtSerCx2SystemDmaTransmitDrainFifo の

EvtSerCx2SystemDmaTransmitInitializeTransaction の

EvtSerCx2SystemDmaTransmitPurgeFifo の

IRP_MJ_WRITE

SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT

SerCx2SystemDmaTransmitCreate

WdfDmaEnablerSetMaximumScatterGatherElements