Partager via


NdisAllocateNetBufferPool, fonction (ndis/nblapi.h)

Appelez la fonction NdisAllocateNetBufferPool pour allouer un pool de structures NET_BUFFER .

Syntaxe

NDIS_EXPORTED_ROUTINE NDIS_HANDLE NdisAllocateNetBufferPool(
  [in, optional] NDIS_HANDLE                      NdisHandle,
  [in]           NET_BUFFER_POOL_PARAMETERS const *Parameters
);

Paramètres

[in, optional] NdisHandle

Handle NDIS obtenu lors de l’initialisation de l’appelant.

[in] Parameters

Pointeur vers une structure NET_BUFFER_POOL_PARAMETERS qui définit les paramètres du pool. La structure est définie comme suit :

typedef struct _NET_BUFFER_POOL_PARAMETERS {
  NDIS_OBJECT_HEADER  Header;
  ULONG  PoolTag;
  ULONG  DataSize;
} NET_BUFFER_POOL_PARAMETERS, *PNET_BUFFER_POOL_PARAMETERS;

Cette structure comprend les membres suivants :

Structure NDIS_OBJECT_HEADER de la structure NET_BUFFER_POOL_PARAMETERS. Définissez le membre Type de la structure spécifiée par Header sur NDIS_OBJECT_TYPE_DEFAULT, le membre Revision sur NET_BUFFER_POOL_PARAMETERS_REVISION_1 et le membre Size sur NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1.

PoolTag

Balise de pool de noyau que l’appelant utilise lorsqu’il alloue NET_BUFFER structures à partir de ce pool. La balise est une chaîne, délimitée par des guillemets simples, avec jusqu’à quatre caractères, généralement spécifiés dans l’ordre inverse. La balise de pool de noyau aide NDIS à identifier le propriétaire des structures NET_BUFFER qui sont allouées à partir de ce pool.

DataSize

Taille de données par défaut pour les mémoires tampons de données associées à ce pool. L’appelant doit définir cette valeur s’il appelle le Fonction NdisAllocateNetBufferMdlAndData . NDIS utilise cette valeur pour définir la taille de la mémoire tampon de données qu’il alloue pour la structure NET_BUFFER. Si l’appelant n’utilise pas cette fonctionnalité, cette valeur doit être définie sur zéro.

Valeur retournée

NdisAllocateNetBufferPool retourne un handle au pool de structures NET_BUFFER que NDIS alloue. Si l’allocation a échoué, ce handle est NULL. Ce handle est un paramètre obligatoire dans les appels ultérieurs aux fonctions NDIS qui allouent et libèrent des structures NET_BUFFER de ce pool.

Remarques

Appelez les fonctions suivantes pour allouer NET_BUFFER structures à partir du pool de structures NET_BUFFER.

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData
NotezNET_BUFFER et NET_BUFFER_LIST structures doivent être allouées à partir d’un pool de mémoires tampons NDIS. Un pilote ne doit pas allouer et initialiser une structure NET_BUFFER ou NET_BUFFER_LIST à partir de son pool de mémoire privée ou de la pile.
 
Vous pouvez appeler NdisAllocateNetBufferPool et définir la valeur DataSize lors de la création d’un pool de structures NET_BUFFER. Dans ce cas, MDL et les données sont préallouées avec chaque structure NET_BUFFER que l’appelant alloue à partir du pool. Vous devez appeler la fonction NdisAllocateNetBufferMdlAndData pour allouer NET_BUFFER structures à partir d’un tel pool.

Les mémoires tampons MDL et de données allouées avec NdisAllocateNetBufferMdlAndData ne doivent pas être libérées séparément de la structure NET_BUFFER. Ces structures sont libérées avec la structure NET_BUFFER lorsque vous appelez la fonction NdisFreeNetBuffer .

Appelez la fonction NdisFreeNetBufferPool pour libérer NET_BUFFER pools de structures créés avec NdisAllocateNetBufferPool.

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), NdisAllocateNetBufferPool(ndis), NdisAllocateNetBufferPool_InitFail(ndis)

Voir aussi

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData

NdisFreeNetBuffer

NdisFreeNetBufferPool