Freigeben über


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 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 groß sein, um die anzahl der in BytesNeededed angegebenen Bytes angegeben ist. Wenn dieser Wert nichtNULL-ist und die angeforderten Daten nicht zusammenhängend sind, kopiert NDIS die angeforderten Daten in den durch Storage angegebenen Bereich.

[in] AlignMultiple

Das Ausrichtungs-Vielfache, das in der Kraft von zwei ausgedrückt wird. Beispiel: 2, 4, 8, 16 usw. Wenn AlignMultiple 1 ist, gibt es keine Ausrichtungsanforderung.

[in] AlignOffset

Der Offset (in Byte) aus der Ausrichtung mehrfach.

Rückgabewert

NdisGetDataBuffer gibt einen Zeiger an den Anfang der zusammenhängenden Daten zurück oder gibt NULL-zurück.

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 BytesNeededed-Parameter ist, ist der Rückgabewert NULL.

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

  • Wenn der parameter Storage nichtNULList, kopiert NDIS die Daten an den Puffer bei Storage. Der Rückgabewert ist der Zeiger, der an den parameter Storage übergeben wird.
  • Wenn der parameter StorageNULList, ist der Rückgabewert NULL.
Der Rückgabewert kann auch aufgrund einer niedrigen Ressourcenbedingung NULL- werden, bei der ein Datenpuffer nicht zugeordnet werden kann. Dies kann auch dann auftreten, wenn die Daten zusammenhängend sind oder der parameter Storage nichtNULL-ist.

Bemerkungen

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, der im zusammenhängenden Datenblock gespeichert ist, problemlos analysieren, den diese Funktion zurückgibt.

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

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)

Siehe auch

NET_BUFFER

NET_BUFFER_DATA