NET_BUFFER structure (ndis/nbl.h)
La structure NET_BUFFER spécifie les données qui sont transmises ou reçues sur le réseau.
typedef struct _NET_BUFFER {
union {
struct {
NET_BUFFER *Next;
MDL *CurrentMdl;
ULONG CurrentMdlOffset;
union {
ULONG DataLength;
SIZE_T stDataLength;
};
MDL *MdlChain;
ULONG DataOffset;
};
SLIST_HEADER Link;
NET_BUFFER_HEADER NetBufferHeader;
};
USHORT ChecksumBias;
USHORT Reserved;
NDIS_HANDLE NdisPoolHandle;
PVOID NdisReserved[2];
PVOID ProtocolReserved[6];
PVOID MiniportReserved[4];
PHYSICAL_ADDRESS DataPhysicalAddress;
union {
NET_BUFFER_SHARED_MEMORY *SharedMemoryInfo;
SCATTER_GATHER_LIST *ScatterGatherList;
};
} NET_BUFFER, *PNET_BUFFER;
Next
Pointeur vers la structure NET_BUFFER suivante dans une liste liée de structures NET_BUFFER. Si cette structure est la dernière structure NET_BUFFER de la liste, ce membre a la valeur NULL.
CurrentMdl
Pointeur vers la première MDL que le pilote actuel utilise. Ce membre fournit une optimisation qui améliore les performances en ignorant toutes les DLL que le pilote actuel n’utilise pas.
CurrentMdlOffset
Décalage, en octets, au début de l’espace de données utilisé dans la MDL spécifiée par le membre CurrentMdl .
DataLength
Longueur, en octets, de l’espace de données utilisé dans la chaîne MDL. La longueur maximale est 0xFFFFFFFF octets.
stDataLength
Longueur, en octets, de l’espace de données utilisé dans la chaîne MDL. La longueur maximale est 0xFFFFFFFF octets. Ce membre est identique à DataLength, mais son type est SIZE_T au lieu de ULONG.
MdlChain
Pointeur vers une liste liée de FICHIERS MDL qui mappent une mémoire tampon de données. La mémoire tampon de données stocke les données réseau.
DataOffset
Décalage, en octets, du début de la chaîne MDL au début des données réseau dans la chaîne MDL. Ce décalage est également la taille, en octets, de l’espace de données inutilisé.
Link
Réservé pour NDIS.
NetBufferHeader
Structure NET_BUFFER_HEADER . Il s’agit d’un doublon de l’union ci-dessus, pour des raisons de compatibilité.
ChecksumBias
Nombre d’octets à ignorer à partir du début de la mémoire tampon de données lors du calcul d’une somme de contrôle. Ce membre est utilisé par le protocole TCP/IP.
Reserved
Réservé pour un usage futur.
NdisPoolHandle
Handle de pool qui identifie le pool de NET_BUFFER à partir duquel la structure NET_BUFFER a été allouée.
NdisReserved[2]
Réservé pour NDIS.
ProtocolReserved[6]
Réservé à une utilisation par les pilotes de protocole. Les pilotes de protocole et les pilotes intermédiaires NDIS peuvent utiliser cette zone à leurs propres fins. Les pilotes intermédiaires peuvent utiliser ce membre uniquement s’il n’est pas déjà utilisé.
MiniportReserved[4]
Réservé à l’utilisation par les pilotes de miniport. Les pilotes miniport et les pilotes intermédiaires NDIS peuvent utiliser cette zone à leurs propres fins.
DataPhysicalAddress
SharedMemoryInfo
Pointeur vers un NET_BUFFER_SHARED_MEMORY structure.
ScatterGatherList
La structure SCATTER_GATHER_LIST décrit une liste de points/regroupements pour DMA.
Les pilotes NDIS peuvent appeler les fonctions suivantes pour allouer et initialiser une structure NET_BUFFER :
Les pilotes NDIS peuvent appeler le Fonction NdisAllocateNetBufferListPool , puis définissez le membre fAllocateNetBuffer de la structure NET_BUFFER_LIST_POOL_PARAMETERS sur TRUE lors de l’allocation d’un pool de structures NET_BUFFER_LIST . Dans ce cas, une structure NET_BUFFER est préallouée avec chaque structure NET_BUFFER_LIST que le pilote alloue à partir du pool.Chaînés à chaque structure NET_BUFFER sont un ou plusieurs descripteurs de mémoire tampon qui mappent des mémoires tampons qui contiennent des données de paquets réseau. Ces descripteurs de mémoire tampon sont spécifiés en tant que chaîne MDL dans le membre NetBufferHeader . Ces données de paquets réseau ont été reçues ou seront transmises.
Pour accéder à un espace de données supplémentaire dans la chaîne MDL, les pilotes NDIS peuvent appeler les fonctions suivantes :
Les pilotes NDIS utilisent généralement les membres MiniportReserved ou ProtocolReserved de la structure NET_BUFFER pour conserver NET_BUFFER informations de contexte de structure.Pour plus d’informations sur l’utilisation des mémoires tampons réseau, consultez architecture NET_BUFFER.
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge dans NDIS 6.0 et versions ultérieures. |
En-tête | ndis/nbl.h (include ndis.h) |
NET_BUFFER_LIST_POOL_PARAMETERS
NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart