NdisAllocateFragmentNetBufferList, fonction (ndis/nblapi.h)
Appelez la fonction NdisAllocateFragmentNetBufferList pour créer une structure de NET_BUFFER_LIST fragmentée basée sur les données d’une structure NET_BUFFER_LIST existante.
Syntaxe
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
);
Paramètres
[in] OriginalNetBufferList
Pointeur vers une structure NET_BUFFER_LIST existante.
NetBufferListPool
Handle obtenu à partir d’un appel au Fonction NdisAllocateNetBufferListPool .
NetBufferPool
Un handle de pool de structure NET_BUFFER qui a été précédemment retourné à partir d’un appel à NdisAllocateNetBufferPool.
[in] StartOffset
Décalage d’octet supplémentaire à partir du début des données dans chaque structure NET_BUFFER . Ce décalage s’ajoute à la valeur du membre DataOffset spécifié dans chaque structure NET_BUFFER.
[in] MaximumLength
Longueur maximale, en octets, de chaque fragment de la nouvelle structure NET_BUFFER_LIST. Chaque fragment est décrit par une structure NET_BUFFER.
[in] DataOffsetDelta
Quantité supplémentaire d’espace de données utilisé que NDIS doit mettre à disposition dans les nouvelles structures NET_BUFFER.
[in] DataBackFill
Quantité d’espace de données en plus de la valeur du paramètre DataOffsetDelta à allouer si l’allocation est nécessaire. Si NDIS doit allouer de la mémoire pour fournir l’espace de données demandé dans DataOffsetDelta, il doit également allouer l’espace supplémentaire spécifié par DataBackFill .
[in] AllocateFragmentFlags
Indicateurs NDIS pouvant être combinés à une opération OR. Définissez ce paramètre sur zéro. Aucun indicateur n’est actuellement défini pour cette fonction.
Valeur retournée
NdisAllocateFragmentNetBufferList retourne un pointeur vers une nouvelle structure de NET_BUFFER_LIST fragmentée. Si l’allocation a échoué, la valeur de retour est NULL.
Remarques
NdisAllocateFragmentNetBufferList alloue et initialise un nouveau fragment NET_BUFFER_LIST structure et NET_BUFFER structures qui décrivent les mêmes données que celles décrites par la structure NET_BUFFER_LIST que l’appelant a transmise à NdisAllocateFragmentNetBufferList.
Si le fragment NET_BUFFER_LIST structure doit avoir des attributs associés à un pool donné, l’appelant doit spécifier le handle de pool dans le paramètre NetBufferListPoolHandle ou NetBufferPoolHandle . Par exemple, le membre ProtocolType de la structure NET_BUFFER_LIST est associé au pool.
Pour chaque structure NET_BUFFER dans la structure source NET_BUFFER_LIST spécifiée, NDIS crée le fragment NET_BUFFER structures comme suit :
- NDIS crée les fragments à partir du début de l’espace de données utilisé dans la structure source NET_BUFFER et décalée par la valeur spécifiée dans le paramètre StartOffset .
- NDIS divise l’espace de données utilisé (après prise en compte de StartOffset ) dans la structure NET_BUFFER source en fragments.
- La longueur de l’espace de données utilisé de chaque fragment est inférieure ou égale à la valeur spécifiée dans le paramètre MaximumLength . L’espace de données utilisé du dernier fragment peut être inférieur à MaximumLength .
- Chaque fragment est décrit par une nouvelle structure NET_BUFFER et un nouvel ensemble de chaînes MDL.
- Le décalage de données des nouvelles structures NET_BUFFER est retiré (la valeur du membre DataOffset est réduite) par le nombre d’octets spécifié dans le paramètre DataOffsetDelta .
- Si NDIS doit allouer de la mémoire pour fournir l’espace de données demandé dans DataOffsetDelta, il doit également allouer l’espace supplémentaire spécifié par DataBackFill .
Appelez le Fonction NdisFreeFragmentNetBufferList pour libérer une structure NET_BUFFER_LIST et toutes les structures NET_BUFFER associées et chaînes MDL précédemment allouées en appelant NdisAllocateFragmentNetBufferList.
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),NdisAllocateFragmentNetBufferList(ndis), NdisAllocateFragmentNetBufferList_InitFail(ndis) |
Voir aussi
NdisAllocateNetBufferListPool NdisFreeFragmentNetBufferListCommentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour