NdisAllocateNetBuffer-Funktion (ndis/nblapi.h)
Rufen Sie die NdisAllocateNetBuffer--Funktion auf, um eine NET_BUFFER Struktur aus einem NET_BUFFER Strukturpool zuzuweisen und zu initialisieren.
Syntax
NDIS_EXPORTED_ROUTINE NET_BUFFER * NdisAllocateNetBuffer(
[in] NDIS_HANDLE PoolHandle,
[in, optional] MDL *MdlChain,
[in] ULONG DataOffset,
[in] SIZE_T DataLength
);
Parameter
[in] PoolHandle
Ein NET_BUFFER Strukturpoolhandle, das zuvor von einem Aufruf an NdisAllocateNetBufferPool.
[in, optional] MdlChain
Ein Zeiger auf eine MDL-Kette, die NDIS zum Initialisieren der neuen NET_BUFFER-Struktur verwendet. MdlChain- kann NULL-sein.
[in] DataOffset
Der anfängliche Offset in Byte vom Anfang des Puffers bis zum Anfang des verwendeten verwendeten Datenbereichs in der MDL-Kette. Der Datenbereich vor diesem Offset ist nicht genutzten Datenbereich. Daher stellt dieser Wert auch die anfängliche Menge des verfügbaren Rückfüllbereichs in der MDL-Kette dar. Wenn MdlChain-NULL-ist, muss DataOffset 0 sein.
[in] DataLength
Die Länge des verwendeten Datenbereichsin Bytes in der MDL-Kette. Wenn MdlChainNULL-ist, muss DataLength- 0 sein.
Rückgabewert
NdisAllocateNetBuffer gibt einen Zeiger auf die NET_BUFFER Struktur zurück, die NDIS zugewiesen hat. Wenn die Zuordnung nicht erfolgreich war, ist dieser Zeiger NULL-.
Bemerkungen
Rufen Sie NdisFreeNetBuffer- auf, um eine NET_BUFFER Struktur zu freigeben, die aus einem NET_BUFFER Strukturpool zugeordnet wurde.
Wenn beispielsweise die ursprüngliche MDL-Kette XDataLength und YDataOffsetenthält und CurrentMdl mit der zweiten MDL (M) in der ursprünglichen MDL-Kette beginnt, CurrentMdlOffset ist Z. Das feld MdlChain in NET_BUFFER_DATA muss dann auf eine neue MDL-Kette verweisen, die X'DataLength und DataOffsetvon Y enthält. Wenn CurrentMdl mit dem dritten MDL (M') in der neuen MDL-Kette beginnt, CurrentMdlOffsetZ'ist und die folgenden Makros zum Festlegen von Feldern in NET_BUFFERverwendet werden müssen:
NET_BUFFER_FIRST_MDL(_NB) = New MDL chain;
NET_BUFFER_DATA_LENGTH(_NB) = X';
NET_BUFFER_DATA_OFFSET(_NB) = Y';
NET_BUFFER_CURRENT_MDL(_NB) = M';
NET_BUFFER_CURRENT_MDL_OFFSET(_NB) = Z';
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), NdisAllocateNetBuffer(ndis) |