Protokolltreiberpufferverwaltung
Ein Protokolltreiber muss NET_BUFFER_LIST Strukturpools und NET_BUFFER Strukturpools für Sendevorgänge verwalten. Um diese Pools zu erstellen, rufen Treiber die folgenden Funktionen auf:
Protokolltreiber können die folgenden Funktionen verwenden, um Strukturen aus den Pools zuzuordnen:
NdisAllocateNetBufferAndNetBufferList
Das Aufrufen von NdisAllocateNetBufferAndNetBufferList ist effizienter als der Aufruf von NdisAllocateNetBufferList gefolgt von NdisAllocateNetBuffer. NdisAllocateNetBufferAndNetBufferList erstellt jedoch nur eine NET_BUFFER-Struktur in der NET_BUFFER_LIST-Struktur. Um NdisAllocateNetBufferAndNetBufferList zu verwenden, muss der Treiber den AllocateNetBuffer-Parameter auf TRUE festlegen, wenn er NdisAllocateNetBufferListPool aufruft.
Protokolltreiber können OID-Anforderungen verwenden, um die Rückfüllungs- und Kontextraumanforderungen der zugrunde liegenden Treiber abzufragen. Ein Protokolltreiber sollte die Rückfüll- und Kontextanforderungen für eine Bindung im Status Öffnen oder Neu starten bestimmen. Der Treiber sollte ausreichend Rückfüllung und Kontextbereich für den gesamten Stapel zuordnen. Bei Bedarf kann ein Protokolltreiber die Pools freigeben und im Zustand Neustart neu zuordnen.
Protokolltreiber verwenden die folgenden Funktionen, um die Pools frei zu geben:
Protokolltreiber verwenden die folgenden Funktionen, um die aus den Pools zugeordneten Strukturen frei zu geben:
Treiber sollten NET_BUFFER Strukturen freigeben, die NdisAllocateNetBuffer zugeordnet sind, bevor die zugeordnete NET_BUFFER_LIST-Struktur freigegeben wird. NET_BUFFER Strukturen, die NdisAllocateNetBufferAndNetBufferList zugeordnet sind, werden freigegeben, wenn der Treiber NdisFreeNetBufferList für die zugeordnete NET_BUFFER_LIST-Struktur aufruft.