Partager via


NdisAllocateCloneNetBufferList, fonction (ndis/nblapi.h)

Appelez la fonction NdisAllocateCloneNetBufferList pour créer une structure de clone NET_BUFFER_LIST.

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 au fonction NdisAllocateNetBufferListPool.

[in, optional] NetBufferPoolHandle

Handle de pool de structures NET_BUFFER qui a été retourné précédemment à partir d’un appel à NdisAllocateNetBufferPool.

[in] AllocateCloneFlags

Indicateurs NDIS qui peuvent être combinés à une opération OR. Les indicateurs suivants sont définis :

NDIS_CLONE_FLAGS_RESERVED

Réservé à NDIS.

NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS

Si cet indicateur est défini, NDIS n’alloue pas de nouvelles DLL pour le NET_BUFFER_LISTcloné. Au lieu de cela, le NET_BUFFER_LIST cloné utilise la même chaîne MDL que la NET_BUFFER_LISTd’origine. Si NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS est effacé, NDIS alloue de nouveaux MDL pour référencer les mémoires tampons de données d’origine.

Valeur de retour

NdisAllocateCloneNetBufferList retourne un pointeur vers la nouvelle structure de NET_BUFFER_LIST clone. Si l’allocation a échoué, ce pointeur est NULL .

Remarques

Appelez NdisAllocateCloneNetBufferList pour créer un clone NET_BUFFER_LIST structure que vous pouvez utiliser pour envoyer des données dupliquées sur un chemin de données distinct.

Chaque structure NET_BUFFER dans la structure de NET_BUFFER_LIST d’origine est cloné uniquement à partir du début de l’espace de données utilisé, et non pas au 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 ProtocolType membre 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 à OriginalNetBufferList. NDIS ne copie pas les données décrites par les MDL d’origine vers 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 clone NET_BUFFER_LIST n’inclut pas de structure initiale structure NET_BUFFER_LIST_CONTEXT.

Appeler le fonction NdisFreeCloneNetBufferList pour libérer une structure NET_BUFFER_LIST et toutes les structures associées et chaînes MDL allouées en appelant NdisAllocateCloneNetBufferList.

Exigences

Exigence Valeur
client minimum pris en charge Prise en charge dans NDIS 6.0 et versions ultérieures.
plateforme cible Universel
d’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)

Voir aussi

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList