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 |
---|---|
|
Der Kopiervorgang wurde erfolgreich abgeschlossen. |
|
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) |