NdisAllocateFragmentNetBufferList-Funktion (ndis/nblapi.h)
Rufen Sie die NdisAllocateFragmentNetBufferList--Funktion 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 Anruf an den NdisAllocateNetBufferListPool Funktion.
NetBufferPool
Ein NET_BUFFER Strukturpoolhandle, das zuvor von einem Aufruf an 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 in jeder NET_BUFFER Struktur angegeben.
[in] MaximumLength
Die maximale Länge in Byte 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 verwendeten Datenraums, die NDIS in den neuen NET_BUFFER Strukturen zur Verfügung stellen sollte.
[in] DataBackFill
Die Menge des Datenbereichs zusätzlich zum Wert des DataOffsetDelta Parameter, der zugewiesen werden soll, wenn die Zuordnung erforderlich ist. Wenn NDIS Speicher zuweisen muss, um den in DataOffsetDeltaangeforderten Datenspeicher bereitzustellen, sollte es auch den zusätzlichen Speicherplatz zuweisen, der DataBackFill- angibt.
[in] AllocateFragmentFlags
NDIS-Flags, die mit einem OR-Vorgang kombiniert werden können. Legen Sie diesen Parameter auf Null 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 die Zuordnung fehlgeschlagen ist, ist der Rückgabewert NULL-.
Bemerkungen
NdisAllocateFragmentNetBufferList ein neues Fragment NET_BUFFER_LIST Struktur und NET_BUFFER Strukturen zuordnet und initialisiert, 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. Der ProtocolType- Member der NET_BUFFER_LIST Struktur ist beispielsweise 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 beginnend am Anfang des verwendeten Datenbereichs in der Quellstruktur NET_BUFFER Struktur und versetzt durch den wert, der im StartOffset Parameter angegeben ist.
- NDIS dividiert den verwendeten Datenraum(nach der Berechnung des StartOffset- ) in der Quelle NET_BUFFER Struktur in Fragmente.
- Die Länge des verwendeten Datenbereichs jedes Fragments ist kleiner oder gleich dem wert, der im parameter MaximumLength angegeben ist. Der verwendete Datenbereich des letzten Fragments kann kleiner als MaximumLength sein.
- Jedes Fragment wird durch eine neue NET_BUFFER Struktur und einen neuen Satz von MDL-Ketten beschrieben.
- Der Datenoffset der neuen NET_BUFFER-Strukturen wird zurückgesetzt (der Wert des DataOffset Members wird reduziert), um die Anzahl der Im DataOffsetDelta Parameter angegebenen Bytes.
- Wenn NDIS Speicher zuweisen muss, um den in DataOffsetDeltaangeforderten Datenspeicher bereitzustellen, sollte es auch den zusätzlichen Speicherplatz zuweisen, der DataBackFill- angibt.
Rufen Sie die NdisFreeFragmentNetBufferList Funktion zum Freigeben einer NET_BUFFER_LIST Struktur und aller zugeordneten NET_BUFFER Strukturen und MDL-Ketten, die zuvor durch Aufrufen NdisAllocateFragmentNetBufferListzugeordnet wurden.
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), NdisAllocateFragmentNetBufferList(ndis), NdisAllocateFragmentNetBufferList_InitFail(ndis) |