NET_DMA_DESCRIPTOR構造体 (netdma.h)
構文
typedef struct _NET_DMA_DESCRIPTOR {
union {
ULONG TransferSize;
struct {
ULONG DCAContext : 32;
} DCAContext32;
struct {
ULONG DCAContext : 16;
ULONG Reserved : 16;
} DCAContext16;
struct {
ULONG DCAContext : 8;
ULONG Reserved : 24;
} DCAContext8;
};
ULONG ControlFlags;
PHYSICAL_ADDRESS SourceAddress;
PHYSICAL_ADDRESS DestinationAddress;
PHYSICAL_ADDRESS NextDescriptor;
union {
ULONG64 Reserved1;
PHYSICAL_ADDRESS NextSourceAddress;
};
union {
ULONG64 Reserved2;
PHYSICAL_ADDRESS NextDestinationAddress;
};
ULONG64 UserContext1;
ULONG64 UserContext2;
} NET_DMA_DESCRIPTOR, *PNET_DMA_DESCRIPTOR;
メンバー
TransferSize
この DMA 記述子に関連付けられているメモリ ブロックのサイズ (バイト単位)。
NetDMA 2.0 以降のプロバイダー ドライバーは、Direct Cache Access (DCA) をサポートするために、TransferSize との共用体の DCAContext32、DCAContext16、および DCAContext8 メンバーを使用します。
DCAContext32
32 ビット DCA コンテキスト。
DCAContext32.DCAContext
DCA コンテキスト。
DCAContext16
16 ビット DCA コンテキスト。
DCAContext16.DCAContext
DCA コンテキスト。
DCAContext16.Reserved
予約済みビット。
DCAContext8
8 ビット DCA コンテキスト。
DCAContext8.DCAContext
DCA コンテキスト。
DCAContext8.Reserved
予約済みビット。
ControlFlags
この DMA 記述子に対して DMA エンジンが実行する必要がある操作を指定するフラグのセット。 このメンバーには、次の値の 1 つ以上が含まれている必要があります (ビットごとの OR 演算と組み合わせる)。
特に記載がない限り、ビットが設定されている場合に説明が適用されます。 | 意味 |
---|---|
|
NetDMA バージョン 2.0 以降のプロバイダーは、 SourceAddress メンバーで指定されているソース物理アドレスからコピーを開始し、最初のページの末尾に達すると、 NextSourceAddress メンバーで指定された物理アドレスからのコピーを続行します。 |
|
NetDMA バージョン 2.0 以降のプロバイダーは、 DestinationAddress メンバーで指定されている宛先の物理アドレスへのコピーを開始し、最初のページの末尾に達すると、 NextDestinationAddress メンバーで指定された物理アドレスへのコピーを続行します。 |
|
DMA エンジンは、 記述子をコンテキスト変更 記述子として識別する必要があります。
NetDMA インターフェイスは、コンテキスト変更記述子を DCA 対応 NetDMA プロバイダーに送信して、NetDMA チャネル上のすべての DMA 転送の宛先データの DCA ターゲット プロセッサを設定します。 NetDMA インターフェイスは、コンテキスト変更記述子の DCAContext8 メンバーを使用して、チャネルのターゲット プロセッサの 8 ビットの高度なプログラミング可能割り込みコントローラー (APIC) 識別子を指定します。 DCA 対応 NetDMA プロバイダーは、新しいコンテキスト変更記述子を受信していない限り、DMA チャネルの DCA アフィニティをプロセッサと共に保持する必要があります。 NetDMA インターフェイスは、チャネルが割り当てられた 1 回後にコンテキスト変更記述子を送信します。また、DMA プロバイダーがハードウェア コンテキストを失った可能性があることを NetDMA が検出した場合 (たとえば、中断操作と再開操作の後など)。 |
|
DMA 操作の種類が標準の DMA 転送の場合、DMA エンジンは、DMA チャネルに割り当てられている DCA ターゲット プロセッサに宛先データの DCA ヒントを送信する必要があります。
DMA チャネルの DCA ターゲット プロセッサを設定するために、NetDMA インターフェイスは以前、そのチャネルにコンテキスト変更記述子を送信しました。 |
|
DMA エンジンは、この DMA 記述子を処理した後、関連付けられた DMA チャネルの割り込みを生成する必要があります。
このビットがクリアされると、DMA エンジンは割り込みを生成しません。 |
|
送信元アドレスをスヌーピングしないでください。
このビットがクリアされると、ソース アドレスは一貫性のあるメモリ空間内にあり、各 CPU キャッシュ行をスヌーピングする必要があります。 DMA クライアントは、適切な DMA 操作に CPU キャッシュのスヌーピングが必要ないことを確認する必要があります。 |
|
宛先アドレスをスヌーピングしないでください。
このビットがクリアされると、宛先アドレスは一貫性のあるメモリ空間にあり、各 CPU キャッシュ行をスヌーピングする必要があります。 DMA クライアントは、適切な DMA 操作に CPU キャッシュのスヌーピングが必要ないことを確認する必要があります。 |
|
の CompletionVirtualAddress メンバーと CompletionPhysicalAddress メンバー 構造体NET_DMA_CHANNEL_PARAMETERS 完了状態の値を参照します。 DMA エンジンは、この記述子の処理を完了すると、完了状態の値を更新します。
完了状態の値は、DMA エンジンによって処理された最新の DMA 記述子の物理アドレスと、その他の状態情報の 64 ビット幅の組み合わせです。 このビットがクリアされると、DMA エンジンは CompletionVirtualAddress または CompletionPhysicalAddress を使用しません。 |
|
DMA エンジンでは、データと完了状態を含め、この記述子のすべての書き込みが完了してから、次の記述子のデータを読み取ります。
このビットがクリアされると、DMA エンジンは、この記述子の処理を完了する前に、次の記述子の処理を開始できます。 |
|
この記述子には DMA 転送は必要ありません。 DMA エンジンは、TransferSize、SourceAddress、または DestinationAddress メンバーをチェックする必要はありません。
このビットをクリアすると、DMA 転送が必要な場合や、長さが 0 の転送である可能性があります。 DMA エンジンは、TransferSize、SourceAddress、または DestinationAddress メンバーをチェックする必要があります。 メモ このビットが設定またはクリアされている場合、NetDMA クライアントは、記述子が有効な転送パラメーターを定義していることを常に確認する必要があります。
|
次のビットマスクは、 ControlFlags メンバーの残りのビットを識別します。
値 | 意味 |
---|---|
|
DMA 操作の種類用に予約されているビットを指定するビット マスク。 NetDMA インターフェイスは、これらのビットを 0 に設定します。 |
|
将来のアプリケーション用に予約されているビットを指定するビット マスク。 NetDMA インターフェイスは、これらのビットを 0 に設定します。 |
SourceAddress
DMA 転送のソースであるメモリ ブロックの物理アドレス。
DestinationAddress
DMA 転送の宛先であるメモリ ブロックの物理アドレス。
NextDescriptor
記述子のリンクリスト内の次のNET_DMA_DESCRIPTOR構造体の物理アドレス。 この記述子がリスト内の最後の記述子である場合、 NextDescriptor は NULL です。
Reserved1
DMA エンジンまたは DMA プロバイダー ドライバーが使用するために予約されているULONG64値。 NetDMA 2.0 以降のプロバイダー ドライバーは、Reserved1 を持つ共用体の NextSourceAddress メンバーを使用して、ソースと宛先の改ページをサポートします。
NextSourceAddress
ソース 改ページで使用されるソース アドレスの 2 ページ目の物理アドレス。
Reserved2
使用する DMA エンジンまたは DMA プロバイダー ドライバー用に予約されているULONG64値。 NetDMA 2.0 以降のプロバイダー ドライバーは、Reserved2 との共用体の NextDestinationAddress メンバーを使用して、ソースと宛先の改ページをサポートします。
NextDestinationAddress
宛先改ページで使用される宛先アドレスの 2 ページ目の物理アドレス。
UserContext1
NetDMA インターフェイスで使用するために予約されているULONG64値。
UserContext2
NetDMA インターフェイスで使用するために予約されているULONG64値。
注釈
NET_DMA_DESCRIPTOR構造体は、DMA 記述子のリンクされたリスト内の 1 つの DMA 転送のソース、宛先、および制御情報を指定します。
DMA 転送を開始するために、NetDMA インターフェイスは、DMA プロバイダー ドライバーの ProviderStartDma 関数の DescriptorPhysicalAddress パラメーターで、NET_DMA_DESCRIPTOR構造体の物理アドレスを提供します。 DescriptorVirtualAddress パラメーターには、記述子の仮想アドレスが含まれています。
NET_DMA_DESCRIPTOR構造体の NextDescriptor メンバーには、記述子のリンクされたリスト内の次のNET_DMA_DESCRIPTOR構造体の物理アドレスが含まれます。
NetDMA インターフェイスは、DMA プロバイダー ドライバーの ProviderAppendDma 関数を呼び出して、DMA チャネルの最後の記述子の後に DMA 記述子のリンクリストを追加します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Server 2008 の NetDMA 2.0 ドライバーでサポートされています。 (NextSourceAddress、NextDestinationAddress、DCAContext32、DCAContext16、および DCAContext8 メンバーを追加しました)。Windows Server 2008 の NetDMA 1.1 ドライバーでサポートされます。 Windows Server 2008 および Windows Vista の NetDMA 1.0 ドライバーでサポートされます。 |
Header | netdma.h (Netdma.h を含む) |