struktur NET_DMA_DESCRIPTOR (netdma.h)

Catatan Antarmuka NetDMA tidak didukung di Windows 8 dan yang lebih baru.
 
Struktur NET_DMA_DESCRIPTOR menentukan informasi transfer DMA untuk setiap entri dalam daftar deskriptor DMA yang ditautkan.

Sintaks

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;

Anggota

TransferSize

Ukuran, dalam byte, dari blok memori yang terkait dengan deskriptor DMA ini.

Driver penyedia NetDMA 2.0 dan yang lebih baru menggunakan anggota DCAContext32, DCAContext16, dan DCAContext8 dengan TransferSize untuk mendukung Akses Cache Langsung (DCA).

DCAContext32

Konteks DCA 32 bit.

DCAContext32.DCAContext

Konteks DCA.

DCAContext16

Konteks DCA 16 bit.

DCAContext16.DCAContext

Konteks DCA.

DCAContext16.Reserved

Bit yang dipesan.

DCAContext8

Konteks DCA 8 bit.

DCAContext8.DCAContext

Konteks DCA.

DCAContext8.Reserved

Bit yang dipesan.

ControlFlags

Sekumpulan bendera yang menentukan operasi yang harus dilakukan mesin DMA untuk deskriptor DMA ini. Anggota ini harus berisi satu atau beberapa nilai berikut (dikombinasikan dengan operasi OR bitwise):

Kecuali dinyatakan lain, deskripsi berlaku untuk ketika bit diatur. Makna
NET_DMA_SOURCE_PAGE_BREAK
Penyedia NetDMA versi 2.0 atau yang lebih baru memulai salinan dari alamat fisik sumber yang ditentukan di anggota SourceAddress dan ketika mencapai akhir halaman pertama, ia melanjutkan salinan dari alamat fisik yang ditentukan dalam anggota NextSourceAddress .
NET_DMA_DESTINATION_PAGE_BREAK
Penyedia NetDMA versi 2.0 atau yang lebih baru memulai salinan ke alamat fisik tujuan yang ditentukan di anggota DestinationAddress dan ketika mencapai akhir halaman pertama, ia melanjutkan salinan ke alamat fisik yang ditentukan dalam anggota NextDestinationAddress .
NET_DMA_OP_TYPE_CONTEXT_CHANGE
Mesin DMA harus mengidentifikasi deskriptor sebagai deskriptor perubahan konteks .

Antarmuka NetDMA mengirimkan deskriptor perubahan konteks ke penyedia NetDMA berkemampuan DCA untuk mengatur prosesor target DCA dari data tujuan untuk semua transfer DMA pada saluran NetDMA. Antarmuka NetDMA menggunakan anggota DCAContext8 dalam deskriptor perubahan konteks untuk menentukan pengidentifikasi pengontrol interupsi (APIC) yang dapat diprogram tingkat lanjut 8-bit dari prosesor target untuk saluran.

Penyedia NetDMA berkemampuan DCA harus menjaga afinitas DCA saluran DMA dengan prosesor selama belum menerima deskriptor perubahan konteks baru.

Antarmuka NetDMA mengirimkan deskriptor perubahan konteks satu kali setelah saluran dialokasikan dan sekali lagi ketika NetDMA mendeteksi bahwa penyedia DMA mungkin telah kehilangan konteks perangkat keras (misalnya, setelah operasi tangguhkan dan lanjutkan).

NET_DMA_DESTINATION_DCA_ENABLE
Jika jenis operasi DMA adalah transfer DMA standar, mesin DMA harus mengirim petunjuk DCA untuk data tujuan ke prosesor target DCA yang telah ditetapkan ke saluran DMA.

Untuk mengatur prosesor target DCA dari saluran DMA, antarmuka NetDMA sebelumnya mengirimkan deskriptor perubahan konteks ke saluran tersebut.

NET_DMA_INTERRUPT_ON_COMPLETION
Mesin DMA harus menghasilkan gangguan untuk saluran DMA terkait setelah memproses deskriptor DMA ini.

Ketika bit ini dibersihkan, mesin DMA tidak menghasilkan gangguan.

NET_DMA_SOURCE_NO_SNOOP
Alamat sumber tidak boleh diinti.

Ketika bit ini dibersihkan, alamat sumber berada di ruang memori yang koheren, dan setiap baris cache CPU harus diintip. Klien DMA harus memverifikasi bahwa pengintaian cache CPU tidak diperlukan untuk operasi DMA yang tepat.

NET_DMA_DESTINATION_NO_SNOOP
Alamat tujuan tidak boleh diinti.

Ketika bit ini dibersihkan, alamat tujuan berada di ruang memori yang koheren, dan setiap baris cache CPU harus diintip. Klien DMA harus memverifikasi bahwa pengintaian cache CPU tidak diperlukan untuk operasi DMA yang tepat.

NET_DMA_STATUS_UPDATE_ON_COMPLETION
Anggota CompletionVirtualAddress dan CompletionPhysicalAddress di NET_DMA_CHANNEL_PARAMETERS struktur mereferensikan nilai status penyelesaian. Mesin DMA memperbarui nilai status penyelesaian ketika menyelesaikan pemrosesan deskriptor ini.

Nilai status penyelesaian adalah kombinasi seluruh 64-bit dari alamat fisik deskriptor DMA terbaru yang diproses mesin DMA, dan informasi status tambahan.

Ketika bit ini dibersihkan, mesin DMA tidak menggunakan CompletionVirtualAddress atau CompletionPhysicalAddress.

NET_DMA_SERIALIZE_TRANSFER
Mesin DMA menjamin bahwa semua penulisan untuk deskriptor ini, termasuk data dan status penyelesaian, selesai sebelum membaca data untuk deskriptor berikutnya.

Ketika bit ini dibersihkan, mesin DMA dapat mulai memproses deskriptor berikutnya sebelum menyelesaikan pemrosesan deskriptor ini.

NET_DMA_NULL_TRANSFER
Transfer DMA tidak diperlukan untuk deskriptor ini. Mesin DMA tidak diperlukan untuk memeriksa anggota TransferSize, SourceAddress, atau DestinationAddress .

Ketika bit ini dibersihkan, transfer DMA mungkin diperlukan atau mungkin transfer panjang nol. Mesin DMA harus memeriksa anggota TransferSize, SourceAddress, atau DestinationAddress .

Catatan Jika bit ini diatur atau dibersihkan, klien NetDMA harus selalu memastikan bahwa deskriptor menentukan parameter transfer yang valid.
 
 

Bitmasks berikut mengidentifikasi bit yang tersisa di anggota ControlFlags :

Nilai Makna
NET_DMA_OP_TYPE_MASK
Masker bit yang menentukan bit yang dicadangkan untuk jenis operasi DMA. Antarmuka NetDMA mengatur bit ini ke nol.
NET_DMA_RESERVED_MASK
Masker bit yang menentukan bit yang dicadangkan untuk aplikasi di masa mendatang. Antarmuka NetDMA mengatur bit ini ke nol.

SourceAddress

Alamat fisik blok memori yang merupakan sumber untuk transfer DMA.

DestinationAddress

Alamat fisik blok memori yang merupakan tujuan untuk transfer DMA.

NextDescriptor

Alamat fisik struktur NET_DMA_DESCRIPTOR berikutnya dalam daftar deskriptor yang ditautkan. Jika deskriptor ini adalah deskriptor terakhir dalam daftar, NextDescriptor adalah NULL.

Reserved1

Nilai ULONG64 yang dicadangkan untuk digunakan oleh mesin DMA atau driver penyedia DMA. Driver penyedia NetDMA 2.0 dan yang lebih baru menggunakan anggota NextSourceAddress dari gabungan dengan Reserved1 untuk mendukung Pemisahan Halaman Sumber dan Tujuan.

NextSourceAddress

Alamat fisik halaman kedua alamat sumber yang digunakan dalam pemisah halaman sumber.

Reserved2

Nilai ULONG64 yang dicadangkan untuk menggunakan mesin DMA atau driver penyedia DMA untuk digunakan. Driver penyedia NetDMA 2.0 dan yang lebih baru menggunakan anggota NextDestinationAddress dari gabungan dengan Reserved2 untuk mendukung Pemisahan Halaman Sumber dan Tujuan.

NextDestinationAddress

Alamat fisik halaman kedua alamat tujuan yang digunakan dalam hentian halaman tujuan.

UserContext1

Nilai ULONG64 yang dicadangkan untuk digunakan antarmuka NetDMA.

UserContext2

Nilai ULONG64 yang dicadangkan untuk digunakan antarmuka NetDMA.

Keterangan

Struktur NET_DMA_DESCRIPTOR menentukan informasi sumber, tujuan, dan kontrol untuk satu transfer DMA dalam daftar deskriptor DMA yang ditautkan.

Untuk memulai transfer DMA, antarmuka NetDMA menyediakan alamat fisik struktur NET_DMA_DESCRIPTOR pada parameter DescriptorPhysicalAddress dari fungsi ProviderStartDma driver penyedia DMA. Parameter DescriptorVirtualAddress berisi alamat virtual deskriptor.

Anggota NextDescriptor dari struktur NET_DMA_DESCRIPTOR berisi alamat fisik struktur NET_DMA_DESCRIPTOR berikutnya dalam daftar deskriptor yang ditautkan.

Antarmuka NetDMA memanggil fungsi ProviderAppendDma driver penyedia DMA untuk menambahkan daftar deskriptor DMA yang ditautkan setelah deskriptor terakhir pada saluran DMA.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung untuk driver NetDMA 2.0 di Windows Server 2008. (Menambahkan nextSourceAddress, NextDestinationAddress, DCAContext32, DCAContext16, dan anggota DCAContext8.) Didukung untuk driver NetDMA 1.1 di Windows Server 2008. Didukung untuk driver NetDMA 1.0 di Windows Server 2008 dan Windows Vista.
Header netdma.h (termasuk Netdma.h)

Lihat juga

NET_DMA_CHANNEL_PARAMETERS

ProviderAppendDma

ProviderStartDma