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 以降のプロバイダー ドライバーでは、DCAContext32、DCAContext16、および DCAContext8 メンバーと TransferSize を使用して、ダイレクト キャッシュ アクセス (DCA)をサポートします。
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 ドライバーでサポートされます。 |
ヘッダー | netdma.h (Netdma.h を含む) |