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 pour la structure NET_BUFFER_POOL_PARAMETERS. Définissez le membre type de la structure spécifiée par -en-tête sur NDIS_OBJECT_TYPE_DEFAULT, le membre Révision sur NET_BUFFER_POOL_PARAMETERS_REVISION_1 et le membre taille sur NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1.

PoolTag

Balise de pool de noyau utilisée par l’appelant lorsqu’il alloue des structures NET_BUFFER à 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 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’elle alloue pour la structure NET_BUFFER. Si l’appelant n’utilise pas cette fonctionnalité, cette valeur doit être définie sur zéro.

Valeur de retour

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 requis dans les appels suivants aux fonctions NDIS qui allouent et libèrent des structures de NET_BUFFER à partir de ce pool.

Remarques

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

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData
RemarqueNET_BUFFER et les structures NET_BUFFER_LIST 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élocalisées avec chaque structure NET_BUFFER que l’appelant alloue à partir du pool. Vous devez appeler la fonction NdisAllocateNetBufferMdlAndData pour allouer des structures NET_BUFFER à partir d’un tel pool.

MdL et mémoires tampons de données allouées avec NdisAllocateNetBufferMdlAndData ne doivent pas être libérées 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 des pools de structure NET_BUFFER créés avec NdisAllocateNetBufferPool.

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

Voir aussi

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData

NdisFreeNetBuffer

NdisFreeNetBufferPool