NdisAllocateNetBuffer, fonction (ndis/nblapi.h)
Appelez la fonction NdisAllocateNetBuffer pour allouer et initialiser une structure NET_BUFFER à partir d’un pool de structures NET_BUFFER .
Syntaxe
NDIS_EXPORTED_ROUTINE NET_BUFFER * NdisAllocateNetBuffer(
[in] NDIS_HANDLE PoolHandle,
[in, optional] MDL *MdlChain,
[in] ULONG DataOffset,
[in] SIZE_T DataLength
);
Paramètres
[in] PoolHandle
Un handle de pool de structure NET_BUFFER qui a été précédemment retourné à partir d’un appel à NdisAllocateNetBufferPool.
[in, optional] MdlChain
Pointeur vers une chaîne MDL que NDIS utilise pour initialiser la nouvelle structure NET_BUFFER . MdlChain peut être NULL.
[in] DataOffset
Décalage initial, en octets, entre le début de la mémoire tampon et le début de l’espace de données utilisé dans la chaîne MDL. L’espace de données avant ce décalage est un espace de données inutilisé. Par conséquent, cette valeur représente également la quantité initiale d’espace de remplissage disponible dans la chaîne MDL. Si MdlChain a la valeur NULL, DataOffset doit être 0.
[in] DataLength
Longueur de l’espace de données utilisé, en octets, dans la chaîne MDL. Si MdlChain a la valeur NULL, DataLength doit être 0.
Valeur retournée
NdisAllocateNetBuffer retourne un pointeur vers la structure NET_BUFFER allouée par NDIS. Si l’allocation a échoué, ce pointeur a la valeur NULL.
Remarques
Appelez NdisFreeNetBuffer pour libérer une structure NET_BUFFER qui a été allouée à partir d’un pool de structures NET_BUFFER .
Par exemple, si la chaîne MDL d’origine contient XDataLength et YDataOffset, et que CurrentMdl commence par la deuxième MDL (M) dans la chaîne MDL d’origine, CurrentMdlOffset a la valeur Z. Le champ MdlChain dans NET_BUFFER_DATA doit ensuite pointer vers une nouvelle chaîne MDL qui contient X’DataLength et Y’DataOffset. Si CurrentMdl commence par la troisième MDL (M') dans la nouvelle chaîne MDL, CurrentMdlOffset a la valeur Z', et les macros suivantes doivent être utilisées pour définir des champs dans NET_BUFFER :
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';
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge dans NDIS 6.0 et versions ultérieures. |
Plateforme cible | Universal |
En-tête | ndis/nblapi.h (include ndis.h) |
Bibliothèque | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Règles de conformité DDI | Irql_NetBuffer_Function(ndis), NdisAllocateNetBuffer(ndis) |