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.
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) |