NET_BUFFER estructura (ndis/nbl.h)
La estructura NET_BUFFER especifica los datos que se transmiten o reciben a través de la red.
Sintaxis
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;
Miembros
Next
Puntero a la siguiente estructura de NET_BUFFER en una lista vinculada de estructuras de NET_BUFFER. Si esta estructura es la última estructura NET_BUFFER de la lista, este miembro es NULL.
CurrentMdl
Puntero al primer MDL que está usando el controlador actual. Este miembro proporciona una optimización que mejora el rendimiento omitiendo los MDL que el controlador actual no está usando.
CurrentMdlOffset
Desplazamiento, en bytes, al principio del espacio de datos usado en mdL especificado por el miembro CurrentMdl .
DataLength
Longitud, en bytes, del espacio de datos usado en la cadena MDL. La longitud máxima es 0xFFFFFFFF bytes.
stDataLength
Longitud, en bytes, del espacio de datos usado en la cadena MDL. La longitud máxima es 0xFFFFFFFF bytes. Este miembro es el mismo que DataLength, pero su tipo es SIZE_T en lugar de ULONG.
MdlChain
Puntero a una lista vinculada de MDL que asignan un búfer de datos. El búfer de datos almacena los datos de red.
DataOffset
Desplazamiento, en bytes, desde el principio de la cadena MDL hasta el principio de los datos de red de la cadena MDL. Este desplazamiento también es el tamaño, en bytes, del espacio de datos sin usar.
Link
Reservado para NDIS.
NetBufferHeader
Estructura de NET_BUFFER_HEADER . Se trata de un duplicado de la unión anterior, por motivos de compatibilidad.
ChecksumBias
Número de bytes que se omitirán desde el principio del búfer de datos al calcular una suma de comprobación. El protocolo TCP/IP usa este miembro.
Reserved
Reservado para uso futuro.
NdisPoolHandle
Identificador de grupo que identifica el grupo de NET_BUFFER del que se asignó la estructura de NET_BUFFER.
NdisReserved[2]
Reservado para NDIS.
ProtocolReserved[6]
Reservado para su uso por controladores de protocolo. Los controladores de protocolo y los controladores intermedios NDIS pueden usar esta área para sus propios fines. Los controladores intermedios solo pueden usar este miembro si aún no está en uso.
MiniportReserved[4]
Reservado para su uso por los controladores de minipuerto. Los conductores de miniporte y los controladores intermedios NDIS pueden usar esta área para sus propios propósitos.
DataPhysicalAddress
SharedMemoryInfo
Puntero a un NET_BUFFER_SHARED_MEMORY estructura.
ScatterGatherList
La estructura de SCATTER_GATHER_LIST describe una lista de dispersión y recopilación para DMA.
Comentarios
Los controladores NDIS pueden llamar a las siguientes funciones para asignar e inicializar una estructura de NET_BUFFER:
Los controladores NDIS pueden llamar a Función NdisAllocateNetBufferListPool y, a continuación, establezca el miembro fAllocateNetBuffer de la estructura de NET_BUFFER_LIST_POOL_PARAMETERS en TRUE al asignar un grupo de estructuras de NET_BUFFER_LIST . En este caso, una estructura de NET_BUFFER se asigna previamente con cada estructura NET_BUFFER_LIST que asigna el controlador desde el grupo.Encadenados a cada estructura de NET_BUFFER son uno o varios descriptores de búfer que asignan búferes que contienen datos de paquetes de red. Estos descriptores de búfer se especifican como una cadena MDL en el miembro NetBufferHeader . Estos datos de paquetes de red se recibieron o se transmitirán.
Para acceder al espacio de datos adicional en la cadena MDL, los controladores NDIS pueden llamar a las siguientes funciones:
Los controladores NDIS suelen usar los miembros MiniportReserved o ProtocolReserved de la estructura NET_BUFFER para mantener NET_BUFFER información de contexto de estructura.Para obtener más información sobre cómo usar búferes netos, consulte arquitectura de NET_BUFFER.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con NDIS 6.0 y versiones posteriores. |
Encabezado | ndis/nbl.h (include ndis.h) |
Consulte también
NET_BUFFER_LIST_POOL_PARAMETERS
NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart