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 Aufruferinitialisierung 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 Member:

Die NDIS_OBJECT_HEADER-Struktur für die NET_BUFFER_POOL_PARAMETERS-Struktur. Legen Sie den Typmember der Struktur, den Header angibt, auf NDIS_OBJECT_TYPE_DEFAULT, das Revisionselement auf NET_BUFFER_POOL_PARAMETERS_REVISION_1 und das Size-Element auf NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1 fest.

PoolTag

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

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 es für die NET_BUFFER-Struktur ordnet. Wenn der Aufrufer dieses Feature nicht verwendet, sollte dieser Wert auf 0 festgelegt werden.

Rückgabewert

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

Hinweise

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

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData
Beachten SieNET_BUFFER und NET_BUFFER_LIST Strukturen aus einem NDIS-Pufferpool zugeordnet werden müssen. 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 DataSize-Wert festlegen, wenn Sie einen NET_BUFFER Strukturpool erstellen. In diesem Fall werden MDL und Daten mit jeder NET_BUFFER Struktur vorab zugeordnet, die der Aufrufer aus dem Pool ordnet. Sie müssen die Funktion NdisAllocateNetBufferMdlAndData aufrufen, um NET_BUFFER Strukturen aus einem solchen Pool zuzuordnen.

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 freizugeben, die mit NdisAllocateNetBufferPool erstellt werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Universell
Header ndis/nblapi.h (einschließlich ndis.h)
Bibliothek Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_NetBuffer_Function(ndis), NdisAllocateNetBufferPool(ndis), NdisAllocateNetBufferPool_InitFail(ndis)

Weitere Informationen

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData

NdisFreeNetBuffer

NdisFreeNetBufferPool