Compartir a través de


Establecer información de NET_BUFFER_LIST

Un proveedor de división de datos de encabezado debe establecer las marcas de división de datos de encabezado en el miembro NblFlags de las estructuras de NET_BUFFER_LIST para las indicaciones de recepción. Para fotogramas divididos, una NIC también debe proporcionar la dirección física de la parte de datos del fotograma recibido en el miembro DataPhysicalAddress de cada estructura de NET_BUFFER .

Nota Un controlador de minipuerto puede establecer el miembro DataPhysicalAddress de la estructura NET_BUFFER, incluso si el NET_BUFFER no está asociado a un marco dividido. En este caso, DataPhysicalAddress contiene la dirección física del encabezado MDL.

El proveedor de división de datos de encabezado combina las marcas del miembro NblFlags con una operación OR bit a bit.

El proveedor de división de datos de encabezado puede establecer las marcas siguientes, incluso si no divide un marco:

NDIS_NBL_FLAGS_IS_IPV4
Todos los fotogramas del NET_BUFFER_LIST son fotogramas IPv4. Si se establece esta marca, no se debe establecer la marca NDIS_NBL_FLAGS_IS_IPV6.

NDIS_NBL_FLAGS_IS_IPV6
Todos los fotogramas de la NET_BUFFER_LIST son fotogramas IPv6. Si se establece esta marca, no se debe establecer la marca NDIS_NBL_FLAGS_IS_IPV4.

NDIS_NBL_FLAGS_IS_TCP
Todos los fotogramas del NET_BUFFER_LIST son fotogramas TCP. Si se establece esta marca, no se debe establecer NDIS_NBL_FLAGS_IS_UDP. Y se deben establecer NDIS_NBL_FLAGS_IS_IPV4 o NDIS_NBL_FLAGS_IS_IPV6.

NDIS_NBL_FLAGS_IS_UDP
Todos los fotogramas de la NET_BUFFER_LIST son marcos UDP. Si se establece esta marca, no se debe establecer NDIS_NBL_FLAGS_IS_TCP. Y se deben establecer NDIS_NBL_FLAGS_IS_IPV4 o NDIS_NBL_FLAGS_IS_IPV6.

Cualquier controlador NDIS puede establecer las marcas anteriores para depurar, probar u otros fines. Si un controlador establece estas marcas, los valores deben describir con precisión el contenido del marco recibido. Se recomienda establecer estas marcas.

El proveedor de división de datos de encabezado puede establecer las siguientes marcas de división de datos de encabezado:

NDIS_NBL_FLAGS_HD_SPLIT
El encabezado y los datos se dividen en todos los marcos Ethernet asociados a la estructura NET_BUFFER_LIST .

NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER
Todos los fotogramas de la estructura NET_BUFFER_LIST se dividen al principio del encabezado upper-layer-protocol. Si se establece esta marca, se deben establecer NDIS_NBL_FLAGS_IS_IPV4 o NDIS_NBL_FLAGS_IS_IPV6. Además, se pueden establecer NDIS_NBL_FLAGS_IS_TCP o NDIS_NBL_FLAGS_IS_UDP. Y NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD no deben establecerse.

NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD
Todos los fotogramas de una estructura de NET_BUFFER_LIST se dividen al principio de la carga TCP o al principio de la carga UDP. Si se establece esta marca, se deben establecer NDIS_NBL_FLAGS_IS_IPV4 o NDIS_NBL_FLAGS_IS_IPV6. Se deben establecer NDIS_NBL_FLAGS_IS_TCP o NDIS_NBL_FLAGS_IS_UDP. Además, no se debe establecer NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER.

Si el proveedor de división de datos de encabezado no divide un marco, el marco debe indicarse con las marcas siguientes desactivadas en NblFlags :

  • NDIS_NBL_FLAGS_HD_SPLIT

  • NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER

  • NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD