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 で指定されたアドレスのデータ レジスタの幅。 使用できる値は 、Width8Bits、 Width16Bits、 Width32Bits、 Width64Bits です。
DeviceAddress
DMA コントローラーの転送元となる変換されたアドレス。 詳細については、WDF_DMA_SYSTEM_PROFILE_CONFIGの DeviceAddress メンバーの説明を参照してください。
DmaDescriptor
受信トランザクションに使用するシステム DMA リソースを記述する CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体へのポインター。 シリアル コントローラー ドライバーは、シリアル コントローラーを開始する EvtDevicePrepareHardware コールバックで受け取る未加工のリソース リストからこの構造体を取得します。
MinimumTransferUnitOverride
既定の最小転送単位の代わりに使用するオーバーライド値。 散布図/収集リスト内の要素によって指定されるバイト数は、最小転送単位の整数倍数である必要があります。 0 の値は、既定の最小転送単位を使用する必要があることを示します。 詳細については、DMA_ADAPTER_INFO_V1の MinimumTransferUnit メンバーの説明を参照してください。
Exclusive
システム DMA 受信トランザクションを排他的に使用して書き込み (IRP_MJ_READ) 要求を処理するかどうか。 読み取り要求でシステム DMA 受信トランザクションを排他的に使用する必要があることを示すには 、TRUE に 設定します。 読み取り要求でシステム DMA 受信トランザクションと PIO 受信トランザクションの組み合わせを使用できることを示すには 、FALSE に 設定します。
このメンバーを TRUE に設定するのは、システム DMA 受信トランザクションの最小転送単位が 1 バイトで、最小トランザクション長が 1 バイトで、トランザクションの読み取りバッファーがメモリ内の任意のバイト境界で開始できる場合のみです。
Exclusive が TRUE の場合、MinimumTransferUnitOverride、DmaAlignment、および 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
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
EvtSerCx2SystemDmaReceiveCleanupTransaction
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
EvtSerCx2SystemDmaReceiveInitializeTransaction
SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT