NdisGetDataBuffer-Funktion (ndis/nblapi.h)

Rufen Sie die NdisGetDataBuffer-Funktion auf, um Zugriff auf einen zusammenhängenden Datenblock aus einer NET_BUFFER-Struktur zu erhalten.

Syntax

NDIS_EXPORTED_ROUTINE PVOID NdisGetDataBuffer(
  [in]           NET_BUFFER *NetBuffer,
  [in]           ULONG      BytesNeeded,
  [in, optional] PVOID      Storage,
  [in]           ULONG      AlignMultiple,
  [in]           ULONG      AlignOffset
);

Parameter

[in] NetBuffer

Ein Zeiger auf eine NET_BUFFER-Struktur.

[in] BytesNeeded

Die Anzahl der angeforderten zusammenhängenden Bytes der angeforderten Daten.

[in, optional] Storage

Ein Zeiger auf einen Puffer oder NULL , wenn vom Aufrufer kein Puffer bereitgestellt wird. Der Puffer muss größer oder gleich der Anzahl von Bytes sein, die in BytesNeed angegeben ist. Wenn dieser Wert nicht NULL ist und die angeforderten Daten nicht zusammenhängend sind, kopiert NDIS die angeforderten Daten in den von Storage angegebenen Bereich.

[in] AlignMultiple

Das Ausrichtungs-Vielfaches, ausgedrückt in Kraft von zwei. Beispiel: 2, 4, 8, 16 usw. Wenn AlignMultiple 1 ist, besteht keine Ausrichtungsanforderung.

[in] AlignOffset

Der Offset in Bytes aus dem Ausrichtungs-Vielfachen.

Rückgabewert

NdisGetDataBuffer gibt einen Zeiger auf den Anfang der zusammenhängenden Daten zurück oder null.

Wenn das DataLength-Element der NET_BUFFER_DATA Struktur in der NET_BUFFER Struktur, auf die der NetBuffer-Parameter verweist, kleiner als der Wert im BytesNeed-Parameter ist, ist der Rückgabewert NULL.

Wenn die angeforderten Daten im Puffer zusammenhängend sind, ist der Rückgabewert ein Zeiger auf einen Speicherort, den NDIS bereitstellt. Wenn die Daten nicht zusammenhängend sind, verwendet NDIS den Storage-Parameter wie folgt:

  • Wenn der Storage-Parameter nicht NULL ist, kopiert NDIS die Daten in den Puffer bei Storage. Der Rückgabewert ist der Zeiger, der an den Storage-Parameter übergeben wird.
  • Wenn der Storage-ParameterNULL ist, ist der Rückgabewert NULL.
Der Rückgabewert kann aufgrund einer niedrigen Ressourcenbedingung, bei der kein Datenpuffer zugeordnet werden kann, auch NULL sein. Dies kann auch auftreten, wenn die Daten zusammenhängend sind oder der Storage-Parameter nicht NULL ist.

Hinweise

Rufen Sie diese Funktion auf, um einen Zeiger auf einen Netzwerkdatenheader abzurufen, der in der NET_BUFFER-Struktur enthalten ist. Sie können den Header problemlos analysieren, der im zusammenhängenden Datenblock gespeichert ist, den diese Funktion zurückgibt.

Die angeforderte Ausrichtungsanforderung wird als zweimaliges Vielfaches plus Offset ausgedrückt. Wenn AlignMultiple beispielsweise 4 und AlignOffset 3 ist, sollte die Datenadresse ein Vielfaches von 4 plus 3 sein. Bei Bedarf weist NDIS Arbeitsspeicher zu, um die Ausrichtungsanforderung zu erfüllen.

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)

Weitere Informationen

NET_BUFFER

NET_BUFFER_DATA