Freigeben über


NdisAllocateNetBufferPool-Funktion (ndis/nblapi.h)

Rufen Sie die NdisAllocateNetBufferPool--Funktion auf, um einen Pool mit NET_BUFFER Strukturen zuzuweisen.

Syntax

NDIS_EXPORTED_ROUTINE NDIS_HANDLE NdisAllocateNetBufferPool(
  [in, optional] NDIS_HANDLE                      NdisHandle,
  [in]           NET_BUFFER_POOL_PARAMETERS const *Parameters
);

Parameter

[in, optional] NdisHandle

Ein NDIS-Handle, das während der Initialisierung des Aufrufers abgerufen wurde.

[in] Parameters

Ein Zeiger auf eine NET_BUFFER_POOL_PARAMETERS Struktur, die die Parameter für den Pool definiert. Die Struktur wird wie folgt definiert:

typedef struct _NET_BUFFER_POOL_PARAMETERS {
  NDIS_OBJECT_HEADER  Header;
  ULONG  PoolTag;
  ULONG  DataSize;
} NET_BUFFER_POOL_PARAMETERS, *PNET_BUFFER_POOL_PARAMETERS;

Diese Struktur enthält die folgenden Elemente:

Die NDIS_OBJECT_HEADER Struktur für die NET_BUFFER_POOL_PARAMETERS Struktur. Legen Sie das Type Element der Struktur fest, das Header- angibt, NDIS_OBJECT_TYPE_DEFAULT, das element Revision auf NET_BUFFER_POOL_PARAMETERS_REVISION_1 und das Size Member auf NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1.

PoolTag

Ein Kernelpooltag, das der Aufrufer verwendet, wenn er NET_BUFFER Strukturen aus diesem Pool zuordnet. Das Tag ist eine Zeichenfolge, die durch einfache Anführungszeichen mit bis zu vier Zeichen getrennt ist, in der Regel in umgekehrter Reihenfolge angegeben. Das Kernelpooltag hilft NDIS, den Besitzer der NET_BUFFER Strukturen zu identifizieren, die aus diesem Pool zugeordnet sind.

DataSize

Die Standarddatengröße für Datenpuffer, die diesem Pool zugeordnet sind. Der Aufrufer muss diesen Wert festlegen, wenn er die NdisAllocateNetBufferMdlAndData Funktion. NDIS verwendet diesen Wert, um die Größe des Datenpuffers festzulegen, den er für die NET_BUFFER Struktur zuweist. Wenn der Aufrufer dieses Feature nicht verwendet, sollte dieser Wert auf Null festgelegt werden.

Rückgabewert

NdisAllocateNetBufferPool gibt einen Handle an den NET_BUFFER Strukturpool zurück, den NDIS zuweist. Wenn die Zuordnung nicht erfolgreich war, ist dieser Handle NULL-. Dieses Handle ist ein erforderlicher Parameter in nachfolgenden Aufrufen von NDIS-Funktionen, die NET_BUFFER Strukturen aus diesem Pool zuordnen und freigeben.

Bemerkungen

Rufen Sie die folgenden Funktionen auf, um NET_BUFFER Strukturen aus dem NET_BUFFER Strukturpool zuzuweisen.

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData
HinweisNET_BUFFER und NET_BUFFER_LIST Strukturen müssen aus einem NDIS-Pufferpool zugeordnet werden. Ein Treiber darf keine NET_BUFFER oder NET_BUFFER_LIST Struktur aus seinem privaten Speicherpool oder dem Stapel zuordnen und initialisieren.
 
Sie können NdisAllocateNetBufferPool- aufrufen und den wert DataSize festlegen, wenn Sie einen NET_BUFFER Strukturpool erstellen. In diesem Fall werden MDL und Daten mit jeder NET_BUFFER Struktur vorverteilt, die der Aufrufer aus dem Pool zuweist. Sie müssen die NdisAllocateNetBufferMdlAndData--Funktion aufrufen, um NET_BUFFER Strukturen aus einem solchen Pool zuzuweisen.

MDL- und Datenpuffer, die NdisAllocateNetBufferMdlAndData- zugeordnet sind, sollten nicht getrennt von der NET_BUFFER-Struktur freigegeben werden. Solche Strukturen werden mit der NET_BUFFER Struktur freigegeben, wenn Sie die NdisFreeNetBuffer--Funktion aufrufen.

Rufen Sie die NdisFreeNetBufferPool Funktion auf, um NET_BUFFER Strukturpools frei zu geben, die mit NdisAllocateNetBufferPoolerstellt werden.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.0 und höher.
Zielplattform- Universal
Header- ndis/nblapi.h (include ndis.h)
Library Ndis.lib
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_NetBuffer_Function(ndis), NdisAllocateNetBufferPool(ndis), NdisAllocateNetBufferPool_InitFail(ndis)

Siehe auch

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData

NdisFreeNetBuffer

NdisFreeNetBufferPool