NdisAllocateCloneNetBufferList, fonction (ndis/nblapi.h)
Appelez la fonction NdisAllocateCloneNetBufferList pour créer un clone NET_BUFFER_LIST structure.
Syntaxe
NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateCloneNetBufferList(
[in] NET_BUFFER_LIST *OriginalNetBufferList,
[in, optional] NDIS_HANDLE NetBufferListPoolHandle,
[in, optional] NDIS_HANDLE NetBufferPoolHandle,
[in] ULONG AllocateCloneFlags
);
Paramètres
[in] OriginalNetBufferList
Pointeur vers une structure NET_BUFFER_LIST existante.
[in, optional] NetBufferListPoolHandle
Handle obtenu à partir d’un appel à Fonction NdisAllocateNetBufferListPool .
[in, optional] NetBufferPoolHandle
Un handle de pool de structure NET_BUFFER qui a été précédemment retourné à partir d’un appel à NdisAllocateNetBufferPool.
[in] AllocateCloneFlags
Indicateurs NDIS qui peuvent être combinés avec une opération OR. Les indicateurs suivants sont définis :
NDIS_CLONE_FLAGS_RESERVED
Réservé pour NDIS.
NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS
Si cet indicateur est défini, NDIS n’alloue pas de nouvelles DLL pour les NET_BUFFER_LIST clonées. Au lieu de cela, le NET_BUFFER_LIST cloné utilise la même chaîne MDL que la NET_BUFFER_LIST d’origine. Si NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS est effacé, NDIS alloue de nouvelles DLL pour référencer les mémoires tampons de données d’origine.
Valeur retournée
NdisAllocateCloneNetBufferList retourne un pointeur vers la nouvelle structure de clone NET_BUFFER_LIST . Si l’allocation a échoué, ce pointeur a la valeur NULL.
Remarques
Appelez NdisAllocateCloneNetBufferList pour créer un clone NET_BUFFER_LIST structure que vous pouvez utiliser pour envoyer des données en double sur un chemin de données distinct.
Chaque structure NET_BUFFER dans la structure NET_BUFFER_LIST d’origine est cloné uniquement à partir du début de l’espace de données utilisé, et non à partir du début de l’espace de données entier. Pour obtenir le décalage entre le début de l’espace de données et le début de l’espace de données utilisé, utilisez la macro NET_BUFFER_DATA_OFFSET .
Si la structure de NET_BUFFER_LIST cloné 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.
La structure de NET_BUFFER_LIST clone décrit les mêmes données que celles décrites par la structure NET_BUFFER_LIST dans OriginalNetBufferList. NDIS ne copie pas les données décrites par les DLL d’origine dans de nouvelles mémoires tampons de données. Au lieu de cela, les structures clonées référencent les mémoires tampons de données d’origine. La structure de NET_BUFFER_LIST clone n’inclut pas de initiale NET_BUFFER_LIST_CONTEXT structure.
Appelez le Fonction NdisFreeCloneNetBufferList pour libérer une structure NET_BUFFER_LIST et toutes les structures associées et chaînes MDL qui ont été allouées en appelant NdisAllocateCloneNetBufferList.
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), NdisAllocateCloneNetBufferList(ndis), NdisAllocateCloneNetBufferList_InitFail(ndis) |