Sdílet prostřednictvím


NET_BUFFER – struktura

Struktury NDIS 6.0 a novější NET_BUFFER jsou podobné NDIS_PACKET strukturám používaným NDIS 5.x a starších ovladačích. Každá struktura NET_BUFFER balí paket síťových dat.

Následující obrázek znázorňuje pole ve struktuře NET_BUFFER.

Diagram znázorňující pole ve struktuře NET_BUFFER

Struktura NET_BUFFER zahrnuje strukturu NET_BUFFER_HEADER v prvku NetBufferHeader. Struktura NET_BUFFER_HEADER zahrnuje strukturu NET_BUFFER_DATA v členovi NetBufferData. Pro přístup k členům struktury NET_BUFFER byste měli použít makra NDIS. Úplný seznam těchto maker najdete na stránce s referencemi na strukturu NET_BUFFER.

Některé členy struktury NET_BUFFER používají pouze NDIS. Členy, které ovladače obvykle používají, jsou:

ProtocolReserved
Vyhrazeno pro použití ovladači protokolu.

MiniportReserved
Vyhrazeno pro použití miniportovými ovladači.

NdisPoolHandle
Určuje popisovač fondu, který identifikuje fond NET_BUFFERu, ze kterého byla přidělena struktura NET_BUFFER.

Další
Určuje ukazatel na další NET_BUFFER strukturu v propojeném seznamu NET_BUFFER struktur. Pokud se jedná o poslední NET_BUFFER strukturu v seznamu, je tento člen NULL.

DataLength
Určuje délku v bajtech síťových dat v řetězci MDL.

DataOffset
Určuje posun v bajtech od začátku paměti v řetězu MDL až po začátek síťových dat v řetězci MDL.

CurrentMdl
Určuje ukazatel na první MDL, který aktuální ovladač používá. Tento ukazatel zajišťuje optimalizaci, která zlepšuje výkon tím, že přeskakuje všechny MDL, které tento ovladač nepoužívá.

CurrentMdlOffset
Určuje posun na začátek využitého datového prostoru v bajtech ve strukturovaném popisu paměti (MDL), který je určen členem CurrentMdl struktury NET_BUFFER.

Následující obrázek znázorňuje vztah mezi členy CurrentMdl, CurrentMdlOffset, DataOffset, a DataLength a datovým prostorem.

Diagram znázorňující přidělení datového prostoru ve vztahu k CurrentMdl, CurrentMdlOffset, DataOffset a DataLength

NDIS poskytuje funkce pro správu datového prostoru v řetězu MDL. Způsob, jakým ovladače používají datový prostor, se dynamicky mění s aktuálním ovladačem. Někdy je k dispozici datový prostor, který aktuální ovladač aktuálně nepoužívá. I když nevyužitý datový prostor se momentálně nepoužívá, může obsahovat platná data. Například na cestě příjmu může nevyužité datové místo obsahovat hlavičkové informace, které byly použity ovladačem nižší úrovně.

Ovladače provádějí operace ustupování a pokročování, aby zvýšily a snížily využitý datový prostor. Další informace o ústupu a pokroku operací naleznete v tématu Retreat and Advance Operations.

Následující termíny a definice popisují prvky NET_BUFFER datového prostoru:

Využité datové místo
Využité datové místo obsahuje data, která aktuální ovladač používá v aktuálním čase. Ovladače zvyšují využité datové místo s operacemi retreatu a snižují využité datové prostory s pokročilými operacemi.

nevyužitého datového prostoru
Aktuální ovladač nepoužívá tento datový prostor v aktuálním čase.

celková velikost dat
Celková velikost dat je součet velikosti využitého datového prostoru a nevyužitého datového prostoru. Chcete-li vypočítat celkovou velikost, přidejte DataOffset k DataLength.

Ústup
Operace ustupování zvětšují velikost využitého datového prostoru.

Pokrok
Pokročilé operace snižují velikost využitého datového prostoru.