Compartir vía


estructura de NET_BUFFER

Las estructuras NDIS 6.0 y posteriores NET_BUFFER son análogas a las estructuras de NDIS_PACKET utilizadas por NDIS 5. controladores x y anteriores. Cada NET_BUFFER estructura empaqueta un paquete de datos de red.

En la ilustración siguiente se muestran los campos de una estructura NET_BUFFER.

Diagrama que muestra los campos en una estructura de NET_BUFFER.

La estructura NET_BUFFER incluye una estructura de NET_BUFFER_HEADER en el miembro NetBufferHeader . La estructura NET_BUFFER_HEADER incluye una estructura de NET_BUFFER_DATA en el miembro NetBufferData . Debe usar macros NDIS para acceder a NET_BUFFER miembros de estructura. Para obtener una lista completa de estas macros, consulte la página de referencia de estructura de NET_BUFFER .

Algunos de los miembros de la estructura NET_BUFFER solo los usa NDIS. Los miembros que suelen usar los controladores son:

ProtocolReserved
Reservado para su uso por los controladores de protocolo.

MiniportReserved
Reservado para su uso por los controladores de minipuerto.

NdisPoolHandle
Especifica un identificador de grupo que identifica el grupo de NET_BUFFER desde el que se asignó la estructura de NET_BUFFER.

Próximo
Especifica un puntero a la siguiente estructura NET_BUFFER de una lista vinculada de estructuras de NET_BUFFER. Si se trata de la última estructura NET_BUFFER de la lista, este miembro es NULL.

DataLength
Especifica la longitud en bytes de los datos de red de la cadena MDL.

DataOffset
Especifica el desplazamiento, en bytes, desde el inicio de la memoria de la cadena MDL hasta el inicio de los datos de red en la cadena MDL.

CurrentMdl
Especifica un puntero al primer MDL que usa el controlador actual. Este puntero proporciona una optimización que mejora el rendimiento omitiendo los MDL que el controlador actual no usa.

CurrentMdlOffset
Especifica el desplazamiento, en bytes, al principio del espacio de datos usado en el MDL especificado por el miembro CurrentMdl de la estructura NET_BUFFER.

En la ilustración siguiente se muestra la relación entre los miembros CurrentMdl, CurrentMdlOffset, DataOffset y DataLength y el espacio de datos.

Diagrama que muestra la asignación de espacio de datos en relación con CurrentMdl, CurrentMdlOffset, DataOffset y DataLength.

NDIS proporciona funciones para administrar el espacio de datos en la cadena MDL. Cómo los controladores usan el espacio de datos cambia dinámicamente con el controlador actual. A veces hay espacio de datos que el controlador actual no usa actualmente. Aunque el espacio de datos sin usar no se usa actualmente, puede contener datos válidos. Por ejemplo, en la ruta de acceso de recepción, el espacio de datos sin usar puede contener información de encabezado que usó un controlador de nivel inferior.

Los controladores realizan operaciones de retirada y avance para aumentar y disminuir el espacio de datos usado. Para obtener más información sobre las operaciones de retirada y avance, vea Operaciones de retirada y avance.

Los términos y definiciones siguientes describen los elementos del espacio de datos NET_BUFFER :

Espacio de datos usado
El espacio de datos usado contiene datos que el controlador actual usa en la hora actual. Los controladores aumentan el espacio de datos usado con operaciones de retirada y reducen el espacio de datos usado con operaciones avanzadas.

Espacio de datos sin usar
El controlador actual no usa este espacio de datos en el momento actual.

Tamaño total de los datos
El tamaño total de los datos es la suma del tamaño del espacio de datos usado y el espacio de datos sin usar. Para calcular el tamaño total, agregue DataOffset a DataLength .

Retiro
Las operaciones de retirada aumentan el tamaño del espacio de datos usado.

Avanzar
Las operaciones avanzadas reducen el tamaño del espacio de datos usado.