Share via


NdisCopyFromNetBufferToNetBuffer-Funktion (ndis/nblapi.h)

Rufen Sie die NdisCopyFromNetBufferToNetBuffer-Funktion auf, um Daten aus einer Quellstruktur NET_BUFFER in eine Zielstruktur NET_BUFFER zu kopieren.

Syntax

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisCopyFromNetBufferToNetBuffer(
  [in]  NET_BUFFER       *Destination,
  [in]  ULONG            DestinationOffset,
  [in]  ULONG            BytesToCopy,
  [in]  NET_BUFFER const *Source,
  [in]  ULONG            SourceOffset,
  [out] ULONG            *BytesCopied
);

Parameter

[in] Destination

Ein Zeiger auf ein zuvor zugeordnetes Ziel NET_BUFFER Struktur.

[in] DestinationOffset

Der Byteoffset innerhalb des Ziels NET_BUFFER Struktur, an der mit dem Schreiben der kopierten Daten begonnen werden soll. Weitere Informationen zu DestinationOffset finden Sie im folgenden Abschnitt hinweise.

[in] BytesToCopy

Die Anzahl der zu kopierenden Bytes.

[in] Source

Ein Zeiger auf eine zuvor zugeordnete Quell-NET_BUFFER-Struktur.

[in] SourceOffset

Der Byteoffset innerhalb der Quell-NET_BUFFER Struktur, an der mit dem Kopieren der Daten begonnen werden soll. Weitere Informationen zu SourceOffset finden Sie im folgenden Abschnitt hinweise.

[out] BytesCopied

Ein Zeiger auf die vom Aufrufer bereitgestellte Variable, in der diese Funktion die Anzahl der tatsächlich kopierten Bytes zurückgibt. Diese Zahl kann kleiner als der Wert von BytesToCopy sein, wenn die Daten für die Quelle nicht mehr vorhanden sind oder das Ziel nicht mehr verfügbar ist.

Rückgabewert

NdisCopyFromNetBufferToNetBuffer gibt einen der folgenden status Werte zurück:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
Der Kopiervorgang wurde erfolgreich abgeschlossen.
NDIS_STATUS_RESOURCES
Fehler beim Kopiervorgang aufgrund unzureichender Ressourcen.

Hinweise

Der Aufrufer von NdisCopyFromNetBufferToNetBuffer ordnet das Ziel NET_BUFFER Struktur und möglicherweise auch die Quellstruktur NET_BUFFER zu. Die MDLs der Ziel-NET_BUFFER-Struktur sollten über genügend Speicherplatz zum Empfangen der Daten verfügen.

Wenn für die Quell- NET_BUFFER Struktur keine Daten mehr vorhanden sind oder die Ziel-NET_BUFFER-Struktur nicht mehr verfügbar ist, bevor die angegebene Anzahl von Bytes kopiert wurde, wird der Kopiervorgang beendet. In beiden Fällen gibt NdisCopyFromNetBufferToNetBuffer die Anzahl der Bytes zurück, die erfolgreich aus der Quelle in die NET_BUFFER-Struktur des Ziels kopiert wurden.

Der Aufrufer muss sicherstellen, dass currentMdlOffset - und CurrentMdl-Werte in den Quell- und Zielstrukturen NET_BUFFER korrekt sind. NDIS ändert die Member im Ziel NET_BUFFER nicht. Der Aufrufer muss die Werte DataLength, DataOffset und CurrentMdlOffset im Ziel NET_BUFFER aktualisieren, nachdem NdisCopyFromNetBufferToNetBuffer zurückgegeben wurde.

NDIS verwendet die Offsets in den Parametern DestionOffset und SourceOffset von NdisCopyFromNetBufferToNetBuffer als Offsets aus dem aktuellen Datenoffset. Wenn beispielsweise der CurrentMdlOffset-Wert im Ziel NET_BUFFER x und DestinationOffset-Werty ist, kopiert NDIS die Daten mit einem x+ y-Offset im Arbeitsspeicher, den der CurrentMdl-Wert beschreibt, in das Ziel NET_BUFFER. Ähnliche Regeln gelten für currentMdlOffset im Quell-NET_BUFFER und dem SourceOffset-Wert .

Anforderungen

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

Weitere Informationen

NET_BUFFER