struktur NET_BUFFER (ndis/nbl.h)
Struktur NET_BUFFER menentukan data yang dikirimkan atau diterima melalui jaringan.
Sintaksis
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 menggunakan ruang data di MDL yang ditentukan oleh anggota CurrentMdl.
DataLength
Panjangnya, dalam byte, dari ruang data yang digunakan dalam rantai MDL. Panjang maksimum adalah byte 0xFFFFFFFF.
stDataLength
Panjangnya, dalam byte, dari ruang data yang digunakan dalam rantai MDL. Panjang maksimum adalah byte 0xFFFFFFFF. 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 merupakan ukuran, 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
Dicadangkan untuk digunakan di 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
SharedMemoryInfo
Penunjuk ke NET_BUFFER_SHARED_MEMORY struktur.
ScatterGatherList
Struktur SCATTER_GATHER_LIST menjelaskan daftar sebar/kumpulkan untuk DMA.
Komentar
Driver NDIS dapat memanggil fungsi berikut untuk mengalokasikan dan menginisialisasi struktur NET_BUFFER:
Driver NDIS dapat memanggil fungsi NdisAllocateNetBufferListPool lalu atur fAllocateNetBuffer anggota 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 MiniportReserved atau ProtocolReserved anggota struktur NET_BUFFER untuk mempertahankan informasi konteks struktur NET_BUFFER.Untuk informasi selengkapnya tentang cara menggunakan buffer net, lihat arsitektur NET_BUFFER.
Persyaratan
Syarat | 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_LIST_POOL_PARAMETERS
NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart