共用方式為


NET_DMA_DESCRIPTOR結構 (netdma.h)

注意 Windows 8 和更新版本中不支援 NetDMA 介面。
 
NET_DMA_DESCRIPTOR 結構會指定 DMA 描述元連結清單中每個專案的 DMA 傳輸資訊。

語法

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 和更新版本的提供者驅動程式會使用 DCAContext32DCAContext16,以及 DCAContext8TransferSize 的成員,以支援 直接快取存取 (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 描述元執行的作業。 這個成員必須包含下列一或多個值(結合位 OR 運算):

除非另有說明,否則描述會在設定位時套用至 。 意義
NET_DMA_SOURCE_PAGE_BREAK
NetDMA 2.0 版或更新版本提供者會從 SourceAddress 成員中指定的來源實體地址啟動複本,並在到達第一頁結尾時,從 NextSourceAddress 成員中指定的實體地址繼續複製。
NET_DMA_DESTINATION_PAGE_BREAK
NetDMA 2.0 版或更新版本的提供者會啟動複製到 DestinationAddress 成員中指定的目的地實體位址,並在到達第一頁結尾時,它會繼續複製到 NextDestinationAddress 成員中指定的實體位址。
NET_DMA_OP_TYPE_CONTEXT_CHANGE
DMA 引擎應將描述項識別為 內容變更 描述元。

NetDMA 介面會將內容變更描述元提交至支援 DCA 的 NetDMA 提供者,以設定 NetDMA 通道上所有 DMA 傳輸之目的地數據的 DCA 目標處理器。 NetDMA 介面會在內容變更描述元中使用 DCAContext8 成員,為通道指定目標處理器的 8 位進階可程式化插斷控制器 (APIC) 識別符。

支援 DCA 的 NetDMA 提供者必須保留具有處理器之 DMA 通道的 DCA 親和性,只要它未收到新的內容變更描述元。

NetDMA 介面會在配置通道之後一次提交內容變更描述元,並在 NetDMA 偵測到 DMA 提供者可能遺失硬體內容時再次提交內容變更描述元(例如,暫停和繼續作業之後)。

NET_DMA_DESTINATION_DCA_ENABLE
如果 DMA 作業類型是標準 DMA 傳輸,DMA 引擎應該將目的地數據的 DCA 提示傳送至已指派給 DMA 通道的 DCA 目標處理器。

若要設定 DMA 通道的 DCA 目標處理器,NetDMA 介面先前已將內容變更描述元提交至該通道。

NET_DMA_INTERRUPT_ON_COMPLETION
DMA 引擎在處理這個 DMA 描述元之後,應該為相關聯的 DMA 通道產生中斷。

清除此位時,DMA 引擎不會產生中斷。

NET_DMA_SOURCE_NO_SNOOP
來源地址不應該被窺探。

清除此位時,來源位址會位於一致的記憶體空間中,而且必須窺探每個CPU快取行。 DMA 用戶端必須確認適當的 DMA 作業不需要探查 CPU 快取。

NET_DMA_DESTINATION_NO_SNOOP
不應窺探目的地位址。

清除此位時,目的地位址會位於一致的記憶體空間中,而且必須窺探每個CPU快取行。 DMA 用戶端必須確認適當的 DMA 作業不需要探查 CPU 快取。

NET_DMA_STATUS_UPDATE_ON_COMPLETION
CompletionVirtualAddressCompletionPhysicalAddress 成員 NET_DMA_CHANNEL_PARAMETERS 結構參考完成狀態值。 當 DMA 引擎完成這個描述項的處理時,會更新完成狀態值。

完成狀態值是 DMA 引擎所處理之最新 DMA 描述元之實體位址的 64 位寬組合,以及其他狀態資訊。

清除此位時,DMA 引擎不會使用 CompletionVirtualAddressCompletionPhysicalAddress

NET_DMA_SERIALIZE_TRANSFER
DMA 引擎保證此描述項的所有寫入,包括數據和完成狀態,都會在讀取下一個描述項的數據之前完成。

清除此位時,DMA 引擎可以開始處理下一個描述元,再完成這個描述項的處理。

NET_DMA_NULL_TRANSFER
此描述項不需要 DMA 傳輸。 DMA 引擎不需要檢查 TransferSizeSourceAddressDestinationAddress 成員。

清除此位時,可能需要 DMA 傳輸,或可能是長度為零的傳輸。 DMA 引擎必須檢查 TransferSizeSourceAddressDestinationAddress 成員。

注意 如果設定或清除此位,NetDMA 用戶端必須一律確保描述項定義有效的傳輸參數。
 
 

下列位掩碼會識別 ControlFlags 成員中的其餘位:

價值 意義
NET_DMA_OP_TYPE_MASK
位掩碼,指定保留給 DMA 作業類型的位。 NetDMA 介面會將這些位設定為零。
NET_DMA_RESERVED_MASK
位掩碼,指定保留給未來應用程式的位。 NetDMA 介面會將這些位設定為零。

SourceAddress

記憶體區塊的實體位址,這是 DMA 傳輸的來源。

DestinationAddress

記憶體區塊的實體位址,該區塊是 DMA 傳輸的目的地。

NextDescriptor

描述項連結清單中的下一個NET_DMA_DESCRIPTOR結構的實體位址。 如果這個描述元是清單中的最後一個描述元,NextDescriptorNULL

Reserved1

保留給 DMA 引擎或 DMA 提供者驅動程式使用的ULONG64值。 NetDMA 2.0 和更新版本的提供者驅動程式會使用 NextSourceAddress 成員與 Reserved1,以支援 Source 和 Destination Page Break

NextSourceAddress

來源分頁符號中所使用之來源位址第二頁的實體位址。

Reserved2

保留給使用 DMA 引擎或 DMA 提供者驅動程式的ULONG64值。 NetDMA 2.0 和更新版本的提供者驅動程式會使用 NextDestinationAddress 成員與 Reserved2,以支援 來源和目的地分頁符號

NextDestinationAddress

目的地分頁符號中使用的第二頁目的地位址實體位址。

UserContext1

保留給 NetDMA 介面使用的ULONG64值。

UserContext2

保留給 NetDMA 介面使用的ULONG64值。

言論

NET_DMA_DESCRIPTOR 結構會指定 DMA 描述元連結清單中單一 DMA 傳輸的來源、目的地和控制資訊。

若要啟動 DMA 傳輸,NetDMA 介面會在 DMA 提供者驅動程式 ProviderStartDma 函式的 描述元PhysicalAddress 參數提供NET_DMA_DESCRIPTOR結構的實體位址。 描述元VirtualAddress 參數包含描述項的虛擬位址。

NextDescriptor NET_DMA_DESCRIPTOR 結構的成員包含描述元連結清單中下一個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)

另請參閱

NET_DMA_CHANNEL_PARAMETERS

ProviderAppendDma

ProviderStartDma