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 operaciones de retroceso pueden aumentar el tamaño del espacio de datos usado en una estructura NET_BUFFER o en todas las estructuras NET_BUFFER de una estructura NET_BUFFER_LIST.
NDIS proporciona las siguientes funciones de retiro:
NdisRetreatNetBufferListDataStart
A veces, las operaciones de retirada pueden asignar MDL asociadas a una estructura de NET_BUFFER. Para proporcionar el mecanismo para asignar MDL, un controlador puede proporcionar un punto de entrada opcional para una función NetAllocateMdl . Si el punto de entrada es NULL, NDIS usa un método predeterminado para asignar MDL. Los MDLs deben liberarse dentro de una función NetFreeMdl que proporcione la contraparte del mecanismo que se usó para asignar los MDLs.
Para obtener el nuevo DataLength, NDIS agrega el dataOffsetDelta especificado por el controlador a dataLength actual. Si el tamaño del espacio de datos sin usar es mayor que DataOffsetDelta, una operación de retirada reduce dataOffset . En este caso, el nuevo DataOffset es el DataOffset actual menos el DataOffsetDelta.
Si DataOffsetDelta es mayor que DataOffset, una operación de retirada asigna un nuevo espacio de datos. En este caso, NDIS ajusta dataOffset en consecuencia.
Para las operaciones de envío, NDIS asigna memoria si no hay suficiente espacio de datos sin usar para satisfacer una solicitud de retirada. Si no se requiere ninguna asignación de memoria, NDIS simplemente ajusta DataOffset y DataLength . Para mejorar el rendimiento, los controladores deben asignar suficiente tamaño total de datos antes de enviarlos para dar cabida a las operaciones de retirada de todos los controladores subyacentes.
Para el caso de devolución de recepción, NDIS simplemente ajusta DataOffset y DataLength en consecuencia. La operación de retroceso invierte la operación de avance que se realizó durante el procesamiento de recepción de datos. Después de la operación de retracción, el espacio de datos usado contiene los datos de encabezado que los controladores subyacentes utilizaban durante el procesamiento de recepción.