NdisAllocateFragmentNetBufferList-Funktion (ndis/nblapi.h)
Rufen Sie die Funktion NdisAllocateFragmentNetBufferList auf, um eine neue fragmentierte NET_BUFFER_LIST-Struktur basierend auf den Daten in einer vorhandenen NET_BUFFER_LIST-Struktur zu erstellen.
Syntax
NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateFragmentNetBufferList(
[in] NET_BUFFER_LIST *OriginalNetBufferList,
NDIS_HANDLE NetBufferListPool,
NDIS_HANDLE NetBufferPool,
[in] ULONG StartOffset,
[in] ULONG MaximumLength,
[in] ULONG DataOffsetDelta,
[in] ULONG DataBackFill,
[in] ULONG AllocateFragmentFlags
);
Parameter
[in] OriginalNetBufferList
Ein Zeiger auf eine vorhandene NET_BUFFER_LIST-Struktur.
NetBufferListPool
Ein Handle, das von einem Aufruf des abgerufen wurde NdisAllocateNetBufferListPool-Funktion .
NetBufferPool
Ein NET_BUFFER Strukturpoolhandle, das zuvor von einem Aufruf von zurückgegeben wurde NdisAllocateNetBufferPool.
[in] StartOffset
Ein zusätzlicher Byteoffset vom Anfang der Daten in jeder NET_BUFFER-Struktur . Dieser Offset ist zusätzlich zum Wert des DataOffset-Elements , der in jeder NET_BUFFER-Struktur angegeben ist.
[in] MaximumLength
Die maximale Länge (in Bytes) für jedes Fragment in der neuen NET_BUFFER_LIST-Struktur. Jedes Fragment wird durch eine NET_BUFFER-Struktur beschrieben.
[in] DataOffsetDelta
Die zusätzliche Menge des verwendeten Datenraums , den NDIS in der neuen NET_BUFFER-Strukturen zur Verfügung stellen sollte.
[in] DataBackFill
Die Menge des Datenraums zusätzlich zum Wert des DataOffsetDelta-Parameters , der zugewiesen werden soll, wenn die Zuordnung erforderlich ist. Wenn NDIS Arbeitsspeicher zuweisen muss, um den in DataOffsetDelta angeforderten Datenspeicher bereitzustellen, sollte es auch den zusätzlichen Speicherplatz zuordnen, den DataBackFill angibt.
[in] AllocateFragmentFlags
NDIS-Flags, die mit einem OR-Vorgang kombiniert werden können. Legen Sie diesen Parameter auf 0 fest. Für diese Funktion sind derzeit keine Flags definiert.
Rückgabewert
NdisAllocateFragmentNetBufferList gibt einen Zeiger auf eine neue fragmentierte NET_BUFFER_LIST-Struktur zurück. Wenn bei der Zuordnung ein Fehler aufgetreten ist, ist der Rückgabewert NULL.
Hinweise
NdisAllocateFragmentNetBufferList ordnet und initialisiert ein neues Fragment NET_BUFFER_LIST Struktur und NET_BUFFER Strukturen, die dieselben Daten beschreiben, die von der NET_BUFFER_LIST-Struktur beschrieben werden, die der Aufrufer an NdisAllocateFragmentNetBufferList übergeben hat.
Wenn das Fragment NET_BUFFER_LIST Struktur Attribute aufweisen soll, die einem bestimmten Pool zugeordnet sind, muss der Aufrufer das Poolhandle im NetBufferListPoolHandle - oder NetBufferPoolHandle-Parameter angeben. Beispielsweise ist das ProtocolType-Element der NET_BUFFER_LIST-Struktur dem Pool zugeordnet.
Für jede NET_BUFFER Struktur in der angegebenen Quellstruktur NET_BUFFER_LIST erstellt NDIS das Fragment NET_BUFFER Strukturen wie folgt:
- NDIS erstellt die Fragmente ab dem Anfang des verwendeten Datenbereichs in der Quellstruktur NET_BUFFER und versetzt durch den im StartOffset-Parameter angegebenen Wert.
- NDIS unterteilt den verwendeten Datenraum (nach Der Abrechnung für das StartOffset ) in der Quellstruktur NET_BUFFER in Fragmente.
- Die Länge des verwendeten Datenraums jedes Fragments ist kleiner oder gleich dem im MaximumLength-Parameter angegebenen Wert. Der verwendete Datenraum des letzten Fragments kann kleiner als MaximumLength sein.
- Jedes Fragment wird durch eine neue NET_BUFFER-Struktur und eine neue Gruppe von MDL-Ketten beschrieben.
- Der Datenoffset des neuen NET_BUFFER-Strukturen wird um die Anzahl von Bytes im DataOffsetDelta-Parameter reduziert (der Wert des DataOffset-Elements wird reduziert).
- Wenn NDIS Arbeitsspeicher zuweisen muss, um den in DataOffsetDelta angeforderten Datenspeicher bereitzustellen, sollte es auch den zusätzlichen Speicherplatz zuordnen, den DataBackFill angibt.
Rufen Sie die folgenden NdisFreeFragmentNetBufferList-Funktion , um eine NET_BUFFER_LIST-Struktur und alle zugeordneten NET_BUFFER-Strukturen und MDL-Ketten frei zu geben, die zuvor durch Aufrufen von NdisAllocateFragmentNetBufferList zugewiesen wurden.
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), NdisAllocateFragmentNetBufferList(ndis), NdisAllocateFragmentNetBufferList_InitFail(ndis) |