NdisAllocateNetBuffer-Funktion (ndis/nblapi.h)
Rufen Sie die NdisAllocateNetBuffer-Funktion auf, um eine NET_BUFFER-Struktur aus einem NET_BUFFER-Strukturpool zuzuordnen 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 von zurückgegeben wurde 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 Bytes vom Anfang des Puffers bis zum Anfang des verwendeten Datenbereichs in der MDL-Kette. Der Datenbereich vor diesem Offset ist ungenutzter Datenbereich. Daher stellt dieser Wert auch die anfängliche Menge des verfügbaren Nachfüllbereichs in der MDL-Kette dar. Wenn MdlChainNULL ist, muss DataOffset 0 sein.
[in] DataLength
Die Länge des verwendeten Datenbereichs in 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 von NDIS zugewiesen wurde. Wenn die Zuordnung nicht erfolgreich war, ist dieser Zeiger NULL.
Hinweise
Rufen Sie NdisFreeNetBuffer auf, um eine NET_BUFFER-Struktur frei zu geben, die aus einem NET_BUFFER-Strukturpool zugeordnet wurde.
Wenn die ursprüngliche MDL-Kette beispielsweise XDataLength und YDataOffset enthält und CurrentMdl mit der zweiten MDL (M) in der ursprünglichen MDL-Kette beginnt, ist CurrentMdlOffsetZ. Das MdlChain-Feld in NET_BUFFER_DATA muss dann auf eine neue MDL-Kette verweisen, die X'DataLength und Y'DataOffset enthält. Wenn CurrentMdl mit der dritten MDL (M') in der neuen MDL-Kette beginnt, ist CurrentMdlOffsetZ', und die folgenden Makros müssen verwendet werden, um Felder in NET_BUFFER festzulegen:
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 |
---|---|
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), NdisAllocateNetBuffer(ndis) |