struktur NET_BUFFER (ndis/nbl.h)

Struktur NET_BUFFER menentukan data yang dikirimkan atau diterima melalui jaringan.

Sintaks

typedef struct _NET_BUFFER {
  union {
    struct {
      NET_BUFFER *Next;
      MDL        *CurrentMdl;
      ULONG      CurrentMdlOffset;
      union {
        ULONG  DataLength;
        SIZE_T stDataLength;
      };
      MDL        *MdlChain;
      ULONG      DataOffset;
    };
    SLIST_HEADER      Link;
    NET_BUFFER_HEADER NetBufferHeader;
  };
  USHORT           ChecksumBias;
  USHORT           Reserved;
  NDIS_HANDLE      NdisPoolHandle;
  PVOID            NdisReserved[2];
  PVOID            ProtocolReserved[6];
  PVOID            MiniportReserved[4];
  PHYSICAL_ADDRESS DataPhysicalAddress;
  union {
    NET_BUFFER_SHARED_MEMORY *SharedMemoryInfo;
    SCATTER_GATHER_LIST      *ScatterGatherList;
  };
} NET_BUFFER, *PNET_BUFFER;

Anggota

Next

Penunjuk ke struktur NET_BUFFER berikutnya dalam daftar struktur NET_BUFFER yang ditautkan. Jika struktur ini adalah struktur NET_BUFFER terakhir dalam daftar, anggota ini adalah NULL.

CurrentMdl

Penunjuk ke MDL pertama yang digunakan driver saat ini. Anggota ini memberikan pengoptimalan yang meningkatkan performa dengan melewati MDL apa pun yang tidak digunakan driver saat ini.

CurrentMdlOffset

Offset, dalam byte, ke awal ruang data yang digunakan di MDL yang ditentukan oleh anggota CurrentMdl .

DataLength

Panjangnya, dalam byte, dari ruang data yang digunakan dalam rantai MDL. Panjang maksimum 0xFFFFFFFF byte.

stDataLength

Panjangnya, dalam byte, dari ruang data yang digunakan dalam rantai MDL. Panjang maksimum 0xFFFFFFFF byte. Anggota ini sama dengan DataLength, tetapi jenisnya SIZE_T alih-alih ULONG.

MdlChain

Penunjuk ke daftar MDL tertaut yang memetakan buffer data. Buffer data menyimpan data jaringan.

DataOffset

Offset, dalam byte, dari awal rantai MDL hingga awal data jaringan dalam rantai MDL. Offset ini juga berukuran, dalam byte, dari ruang data yang tidak digunakan.

Link

Dicadangkan untuk NDIS.

NetBufferHeader

Struktur NET_BUFFER_HEADER . Ini adalah duplikat dari serikat di atas, karena alasan kompatibilitas.

ChecksumBias

Jumlah byte yang akan dilewati dari awal buffer data saat menghitung checksum. Anggota ini digunakan oleh protokol TCP/IP.

Reserved

Disiapkan untuk penggunaan masa mendatang.

NdisPoolHandle

Handel kumpulan yang mengidentifikasi kumpulan NET_BUFFER tempat struktur NET_BUFFER dialokasikan.

NdisReserved[2]

Dicadangkan untuk NDIS.

ProtocolReserved[6]

Dicadangkan untuk digunakan oleh driver protokol. Driver protokol dan driver perantara NDIS dapat menggunakan area ini untuk tujuan mereka sendiri. Driver perantara dapat menggunakan anggota ini hanya jika belum digunakan.

MiniportReserved[4]

Dicadangkan untuk digunakan oleh driver miniport. Driver miniport dan driver perantara NDIS dapat menggunakan area ini untuk tujuan mereka sendiri.

DataPhysicalAddress

Catatan Nama anggota ini adalah NdisReserved1 untuk driver NDIS 6.0 dan merupakan DataPhysicalAddress untuk driver NDIS 6.1 dan yang lebih baru. Untuk driver NDIS 6.0, anggota ini dicadangkan untuk NDIS.
 
Alamat fisik bagian data dari bingkai. Anggota ini harus ke nol jika driver yang dialokasikan NET_BUFFER tidak menentukan alamat. Anggota ini hanya berlaku jika bendera NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER atau NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD diatur dalam anggota NblFlags dari struktur NET_BUFFER_LIST yang terkait dengan NET_BUFFER.
Catatan Driver miniport dapat mengatur anggota DataPhysicalAddress dari struktur NET_BUFFER, bahkan jika struktur tidak terkait dengan bingkai terpisah. Dalam hal ini, DataPhysicalAddress berisi alamat fisik header MDL.
 

SharedMemoryInfo

Penunjuk ke NET_BUFFER_SHARED_MEMORY struktur.

ScatterGatherList

Struktur SCATTER_GATHER_LIST menjelaskan daftar sebar/kumpulkan untuk DMA.

Keterangan

Driver NDIS dapat memanggil fungsi berikut untuk mengalokasikan dan menginisialisasi struktur NET_BUFFER:

Driver NDIS dapat memanggil Fungsi NdisAllocateNetBufferListPool lalu atur anggota fAllocateNetBuffer dari struktur NET_BUFFER_LIST_POOL_PARAMETERS ke TRUE saat mengalokasikan kumpulan struktur NET_BUFFER_LIST . Dalam hal ini, struktur NET_BUFFER dialokasikan sebelumnya dengan setiap struktur NET_BUFFER_LIST yang dialokasikan driver dari kumpulan.

Ditautkan ke setiap struktur NET_BUFFER adalah satu atau beberapa deskriptor buffer yang memetakan buffer yang berisi data paket jaringan. Deskriptor buffer ini ditentukan sebagai rantai MDL di anggota NetBufferHeader . Data paket jaringan tersebut diterima atau akan ditransmisikan.

Untuk mengakses ruang data tambahan dalam rantai MDL, driver NDIS dapat memanggil fungsi berikut:

Driver NDIS biasanya menggunakan anggota MiniportReserved atau ProtocolReserved dari struktur NET_BUFFER untuk mempertahankan NET_BUFFER informasi konteks struktur.
Catatan Hanya satu driver yang dapat menggunakan anggota MiniportReserved atau ProtocolReserved . Oleh karena itu, jika driver lain telah menggunakan salah satu anggota ini, driver perantara tidak dapat menggunakannya.
 
Untuk mengakses anggota struktur NET_BUFFER, gunakan makro dan fungsi berikut:

NET_BUFFER_NEXT_NB

NET_BUFFER_FIRST_MDL

NET_BUFFER_DATA_OFFSET

NET_BUFFER_DATA_LENGTH

NET_BUFFER_PROTOCOL_RESERVED

NET_BUFFER_MINIPORT_RESERVED

NET_BUFFER_CHECKSUM_BIAS

NET_BUFFER_CURRENT_MDL

NET_BUFFER_CURRENT_MDL_OFFSET

NdisGetPoolFromNetBuffer

Untuk informasi selengkapnya tentang cara menggunakan buffer net, lihat Arsitektur NET_BUFFER.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung di NDIS 6.0 dan yang lebih baru.
Header ndis/nbl.h (termasuk ndis.h)

Lihat juga

NET_BUFFER_CHECKSUM_BIAS

NET_BUFFER_CURRENT_MDL

NET_BUFFER_CURRENT_MDL_OFFSET

NET_BUFFER_DATA_LENGTH

NET_BUFFER_DATA_OFFSET

NET_BUFFER_FIRST_MDL

NET_BUFFER_HEADER

NET_BUFFER_LIST

NET_BUFFER_LIST_POOL_PARAMETERS

NET_BUFFER_MINIPORT_RESERVED

NET_BUFFER_NEXT_NB

NET_BUFFER_PROTOCOL_RESERVED

NdisAllocateNetBuffer

NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool

NdisGetPoolFromNetBuffer

NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart

SCATTER_GATHER_LIST