NdisAllocateBufferPool-Funktion (ndis.h)

Hinweis NDIS 5. x ist veraltet und wird durch NDIS 6 ersetzt. x. Informationen zur Entwicklung neuer NDIS-Treiber finden Sie unter Netzwerktreiber ab Windows Vista. Informationen zum Portieren von NDIS 5. x Treiber für NDIS 6. x, siehe Portieren von NDIS 5.x-Treibern zu NDIS 6.0.

Diese Funktion gibt ein Handle zurück, mit dem der Aufrufer Pufferdeskriptoren zuordnen kann, indem die NdisAllocateBuffer-Funktion aufgerufen wird.

Syntax

void NdisAllocateBufferPool(
  [out] PNDIS_STATUS Status,
  [out] PNDIS_HANDLE PoolHandle,
  [in]  UINT         NumberOfDescriptors
);

Parameter

[out] Status

Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der diese Funktion den letzten status der Pufferpoolzuordnung zurückgibt.

[out] PoolHandle

Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der diese Funktion ein Handle an den Pufferpool zurückgibt. Dieses Handle ist ein erforderlicher Parameter für die NDIS-Pufferfunktionen, die der Treiber anschließend aufruft.

[in] NumberOfDescriptors

Gibt die Anzahl der Pufferdeskriptoren an, die der Aufrufer aus dem Pufferpool zuordnen soll, ohne zugeordnete Pufferdeskriptoren wieder an den Pool freizugeben.

Rückgabewert

Keine

Bemerkungen

Gibt immer NDIS_STATUS_SUCCESS zurück.

Nachdem diese Funktion zurückgegeben wurde, ruft der Treiber die NdisAllocateBuffer-Funktion mehrmals auf, um die benötigten Pufferdeskriptoren zuzuordnen. Ein Treiber sollte diese Funktion während der Initialisierung aufrufen.

Der von einem NIC-Treiber angegebene Parameter NumberOfDescriptors hängt in der Regel von den Features der NIC ab. Beispielsweise würde der Treiber eines Bus-master DMA-NIC mit Ringpuffern mindestens eine ausreichende AnzahlOfDescriptors angeben, um den vollständigen Ring zu zuordnen.

Die im Aufruf dieser Funktion angegebenen NumberOfDescriptors sind das effektive Limit dafür, wie oft der Treiber NdisAllocateBuffer aufrufen kann, bevor er die NdisFreeBuffer-Funktion aufrufen muss, um einen Pufferdeskriptor in die freie Liste für den Pufferpool zurückzugeben.

Wenn ein Treiber den zugeordneten Pufferpool nicht mehr benötigt, ruft er die NdisFreeBufferPool-Funktion auf, um das Pufferpoolhandle freizugeben.

Der Treiber muss jede Spinsperre freigeben, die er hält, bevor er diese Funktion aufruft.

Alle unteren NDIS-Treiber müssen alle Pufferdeskriptoren zuordnen, die sie zu Paketen aus einem Pufferpool verketten. Nur Protokolltreiber der höchsten Ebene können betriebssystemabhängige Deskriptoren zugeordnet werden, die virtuelle Speicherbereiche zuordnen. Wenn diese Speicherdeskriptoren NDIS-Pufferdeskriptoren entsprechen, kann ein Protokoll der höchsten Ebene solche Deskriptoren als Parameter an NDIS-Funktionen übergeben.

Betriebssystemversionen: Windows CE .NET 4.0 und höher.

Anforderungen

Anforderung Wert
Header ndis.h
IRQL IRQL <= DISPATCH_LEVEL

Weitere Informationen