次の方法で共有


SERCX2_SYSTEM_DMA_RECEIVE_CONFIG構造体 (sercx.h)

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG 構造体には、シリアル フレームワーク拡張機能 (SerCx2) のバージョン 2 が新しいシステム DMA 受信オブジェクトの構成に使用する情報が含まれています。

構文

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で指定されたアドレスにあるデータ レジスタの幅。 使用できる値は 、width8BitsWidth16BitsWidth32Bits、および Width64Bitsです。

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に設定します。

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

排他 が TRUE場合、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 以降でサポートされています。
ヘッダー 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