Freigeben über


Filtertreiberpufferverwaltung

Filtertreiber erstellen Puffer zum Kopieren von Netzwerkdaten, die von anderen Treibern abgerufen wurden, oder um Sende- oder Empfangsvorgänge zu initiieren.

Wenn ein Filtertreiber keine Puffer erstellt, verwaltet der Treiber keine Pufferpools. Ein solcher Treiber gibt einfach die Puffer weiter, die er von anderen Treibern empfängt.

Ein Filtertreiber, der Puffer zur Unterstützung von Sende- oder Empfangsvorgängen erstellt, muss NET_BUFFER_LIST Strukturpools und NET_BUFFER Strukturpools verwalten.

Um diese Pools zu erstellen, rufen Treiber die folgenden Funktionen auf:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

Filtertreiber können die folgenden Funktionen verwenden, um Strukturen aus den Pools zuzuordnen:

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

Das Aufrufen von NdisAllocateNetBufferAndNetBufferList ist effizienter als das Aufrufen von NdisAllocateNetBufferList gefolgt von NdisAllocateNetBuffer. NdisAllocateNetBufferAndNetBufferList erstellt jedoch nur eine NET_BUFFER-Struktur auf der NET_BUFFER_LIST-Struktur. Um NdisAllocateNetBufferAndNetBufferList zu verwenden, muss der Treiber den AllocateNetBuffer-Parameter auf TRUE festlegen, wenn er NdisAllocateNetBufferListPool aufruft.

Filtertreiber, die aus Sendeanforderungen stammen, sollten den Kontext und den Platzbedarf der zugrunde liegenden Treiber bestimmen. Filtertreiber verwenden Neustartattribute, um die Nachfüllanforderungen der zugrunde liegenden Treiber zu bestimmen. Ein Filtertreiber sollte die Nachfüll- und Kontextanforderungen im Zustand Neustarten bestimmen. Der Treiber sollte genügend Rückfüll- und Kontextspeicher für den gesamten Stapel zuordnen. Bei Bedarf kann ein Filtertreiber die Pools freigeben und im Status Neustart neu zuordnen.

Filtertreiber verwenden die folgenden Funktionen, um die Pools frei zu geben:

NdisFreeNetBufferListPool

NdisFreeNetBufferPool

Filtertreiber verwenden die folgenden Funktionen, um die aus den Pools zugeordneten Strukturen zu befreien:

NdisFreeNetBufferList

NdisFreeNetBuffer

Treiber sollten NET_BUFFER Strukturen freigeben, die NdisAllocateNetBuffer zugeordnet sind, bevor sie die zugeordnete NET_BUFFER_LIST-Struktur freigeben. NET_BUFFER Strukturen, die NdisAllocateNetBufferAndNetBufferList zugeordnet sind, werden freigegeben, wenn der Treiber NdisFreeNetBufferList für die zugeordnete NET_BUFFER_LIST-Struktur aufruft.