SERCX2_SYSTEM_DMA_RECEIVE_CONFIG構造体 (sercx.h)

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

シリアル コントローラーが 1 つのシステム DMA 転送で処理できる既定の最大サイズ (バイト単位)。 読み取り (IRP_MJ_READ) 要求内のバッファーのサイズがこの最大サイズより大きい場合、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 で指定されたアドレスのデータ レジスタの幅。 使用できる値は 、Width8BitsWidth16BitsWidth32BitsWidth64Bits です

DeviceAddress

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

DmaDescriptor

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

MinimumTransferUnitOverride

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

Exclusive

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

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

ExclusiveTRUE の場合、MinimumTransferUnitOverrideDmaAlignmentおよび MinimumTransactionLength メンバーは 0 である必要があります。

このメンバーの値に関係なく、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 以降でサポートされます。
Header 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