Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las estructuras NDIS 6.0 y posteriores NET_BUFFER son análogas a las estructuras de NDIS_PACKET utilizadas por NDIS 5.x y controladores 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.
La estructura NET_BUFFER incluye una estructura 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 de NET_BUFFER solo los usa NDIS. Los miembros que suelen usar los controladores son:
ProtocolReserved
Reservado para su uso por controladores de protocolo.
MiniportReserved
Reservado para su uso por los controladores de miniport.
NdisPoolHandle
Especifica un identificador de grupo que identifica el grupo de NET_BUFFER desde el que se asignó la estructura NET_BUFFER.
siguiente
Especifica un puntero a la siguiente estructura de NET_BUFFER en una lista vinculada de estructuras de NET_BUFFER. Si se trata de la última estructura de 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 en la cadena MDL hasta el inicio de los datos de red en la cadena MDL.
CurrentMdl
Especifica un puntero a la primera MDL que usa el controlador actual. Este puntero proporciona una optimización que mejora el rendimiento omitiendo los MDL que el controlador actual no está usando.
CurrentMdlOffset
Especifica el desplazamiento, en bytes, al principio del espacio de datos usado en la MDL que especifica el currentMdl miembro de la estructura de NET_BUFFER.
En la ilustración siguiente se muestra la relación entre el CurrentMdl, CurrentMdlOffset, DataOffsety miembros DataLength y el espacio de datos.
NDIS proporciona funciones para administrar el espacio de datos en la cadena MDL. Cómo usan los controladores el espacio de datos cambia dinámicamente con el controlador actual. A veces hay espacio de datos que actualmente no usa el controlador actual. 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 reducir el espacio de datos usado . Para obtener más información sobre las operaciones de retirada y avance, consulte retiro y operaciones avanzadas.
Los siguientes términos y definiciones describen los elementos del espacio de datos de NET_BUFFER:
espacio de datos usado
espacio de datos usado contiene datos que usa el controlador actual en el momento actual. Los controladores aumentan espacio de datos usado con operaciones de retirada y reducen 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 datos
El tamaño total de los datos es la suma del tamaño del espacio de datos usado y espacio de datos sin usar. Para calcular el tamaño total, agregue el DataOffset al DataLength .
Retreat
Las operaciones de retirada aumentan el tamaño de la espacio de datos usado.
avance de
Las operaciones avanzadas reducen el tamaño del espacio de datos usado.