Funzione NdisAllocateNetBufferPool (ndis/nblapi.h)

Chiamare la funzione NdisAllocateNetBufferPool per allocare un pool di strutture NET_BUFFER .

Sintassi

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

Parametri

[in, optional] NdisHandle

Handle NDIS ottenuto durante l'inizializzazione del chiamante.

[in] Parameters

Puntatore a una struttura NET_BUFFER_POOL_PARAMETERS che definisce i parametri per il pool. La struttura è definita come segue:

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

Questa struttura include i membri seguenti:

Struttura NDIS_OBJECT_HEADER per la struttura NET_BUFFER_POOL_PARAMETERS. Impostare il membro Type della struttura specificata da Header su NDIS_OBJECT_TYPE_DEFAULT, il membro Revision su NET_BUFFER_POOL_PARAMETERS_REVISION_1 e il membro Size su NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1.

PoolTag

Tag del pool di kernel usato dal chiamante quando alloca NET_BUFFER strutture da questo pool. Il tag è una stringa, delimitata da virgolette singole, con un massimo di quattro caratteri, in genere specificato in ordine inverso. Il tag del pool di kernel consente a NDIS di identificare il proprietario delle strutture NET_BUFFER allocate da questo pool.

DataSize

Dimensioni predefinite dei dati per i buffer di dati associati a questo pool. Il chiamante deve impostare questo valore se chiama Funzione NdisAllocateNetBufferMdlAndData . NDIS usa questo valore per impostare le dimensioni del buffer di dati allocato per la struttura NET_BUFFER. Se il chiamante non usa questa funzionalità, questo valore deve essere impostato su zero.

Valore restituito

NdisAllocateNetBufferPool restituisce un handle al pool di strutture NET_BUFFER allocato da NDIS. Se l'allocazione non è riuscita, questo handle è NULL. Questo handle è un parametro obbligatorio nelle chiamate successive alle funzioni NDIS che allocano e liberano strutture NET_BUFFER da questo pool.

Commenti

Chiamare le funzioni seguenti per allocare NET_BUFFER strutture dal pool di strutture NET_BUFFER.

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData
Si notiNET_BUFFER e NET_BUFFER_LIST strutture devono essere allocate da un pool di buffer NDIS. Un driver non deve allocare e inizializzare una struttura NET_BUFFER o NET_BUFFER_LIST dal pool di memoria privato o dallo stack.
 
È possibile chiamare NdisAllocateNetBufferPool e impostare il valore DataSize durante la creazione di un pool di strutture NET_BUFFER. In questo caso, MDL e i dati vengono preallocati con ogni struttura NET_BUFFER allocata dal chiamante dal pool. È necessario chiamare la funzione NdisAllocateNetBufferMdlAndData per allocare NET_BUFFER strutture da un pool di questo tipo.

I buffer di dati e MDL allocati con NdisAllocateNetBufferMdlAndData non devono essere liberati dalla struttura NET_BUFFER. Tali strutture vengono liberate con la struttura NET_BUFFER quando si chiama la funzione NdisFreeNetBuffer .

Chiamare la funzione NdisFreeNetBufferPool per liberare NET_BUFFER pool di strutture creati con NdisAllocateNetBufferPool.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Universale
Intestazione ndis/nblapi.h (include ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_NetBuffer_Function(ndis), NdisAllocateNetBufferPool(ndis), NdisAllocateNetBufferPool_InitFail(ndis)

Vedi anche

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData

NdisFreeNetBuffer

NdisFreeNetBufferPool