estructura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST (ndischimney.h)
[La característica de descarga de chimenea TCP está en desuso y no se debe usar.]
La estructura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST es el bloque de creación básico de un árbol de estado de descarga de chimenea TCP. Un árbol de estado de descarga puede contener una o varias estructuras de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.
Sintaxis
typedef struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST {
IN NDIS_OBJECT_HEADER Header;
IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
#endif
OUT NDIS_STATUS Status;
IN PVOID NdisReserved[2];
IN OUT PVOID *MiniportOffloadContext;
IN NDIS_HANDLE NdisOffloadHandle;
IN PVOID ProtocolReserved[2];
IN PVOID MiniportReserved[2];
IN PVOID ImReserved[2];
IN PVOID Scratch[2];
IN PVOID SourceHandle;
IN NDIS_PORT_NUMBER PortNumber;
IN OUT PNET_BUFFER_LIST NetBufferListChain;
} NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, *PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
Miembros
Header
Encabezado de la estructura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. El encabezado tiene formato de estructura NDIS_OBJECT_HEADER . La estructura NDIS_OBJECT_HEADER contiene el número de revisión de la estructura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, el tipo de estado de descarga que sigue inmediatamente a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST en memoria y el tamaño de la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, incluido el encabezado, en bytes.
El miembro Type de la estructura NDIS_OBJECT_HEADER indica el tipo de estado de descarga y, por implicación, la estructura de estado de descarga específica (o estructuras) que siguen inmediatamente a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST en memoria.
Se admiten los siguientes valores de OFFLOAD_STATE_TYPE:
NeighborOffloadConstState
Especifica el estado de vecino constante. Este estado tiene el formato de NEIGHBOR_OFFLOAD_STATE_CONST estructura.
NeighborOffloadCachedState
Especifica el estado vecino almacenado en caché. Este estado tiene el formato de NEIGHBOR_OFFLOAD_STATE_CACHED estructura.
NeighborOffloadDelegatedState
Especifica el estado vecino delegado. Este estado tiene el formato de NEIGHBOR_OFFLOAD_STATE_DELEGATED estructura.
NeighborOffloadState
Especifica toda la información de estado vecino, incluida la constante, almacenada en caché y el estado vecino delegado. Este estado tiene el formato de estructura NEIGHBOR_OFFLOAD_STATE_CONST, seguido de una estructura de NEIGHBOR_OFFLOAD_STATE_CACHED, seguida de una estructura de NEIGHBOR_OFFLOAD_STATE_DELEGATED.
Ip4OffloadConstState
Especifica el estado de ruta de acceso constante (IPv4). Este estado tiene el formato de PATH_OFFLOAD_STATE_CONST estructura.
Ip4OffloadCachedState
Especifica el estado de la ruta de acceso almacenada en caché (IPv4). Este estado tiene el formato de PATH_OFFLOAD_STATE_CACHED estructura.
Ip4OffloadDelegatedState
Especifica el estado de ruta de acceso delegada (IPv4). Este estado tiene el formato de PATH_OFFLOAD_STATE_DELEGATED estructura. Actualmente no hay ningún estado de ruta de acceso delegado. La estructura PATH_OFFLOAD_STATE_DELEGATED no contiene ninguna variable.
Ip4OffloadState
Especifica todo el estado de ruta de acceso (IPv4), incluida la constante, la caché y el estado de ruta de acceso delegada. Este estado tiene el formato de estructura PATH_OFFLOAD_STATE_CONST, seguido de una estructura de PATH_OFFLOAD_STATE_CACHED, seguida de una estructura de PATH_OFFLOAD_STATE_DELEGATED.
Ip6OffloadConstState
Especifica el estado de la ruta de acceso constante (IPv6). Este estado tiene el formato de estructura PATH_OFFLOAD_STATE_CONST.
Ip6OffloadCachedState
Especifica el estado de la ruta de acceso almacenada en caché (IPv6). Este estado tiene formato de estructura PATH_OFFLOAD_STATE_CACHED.
Ip6OffloadDelegatedState
Especifica el estado de ruta de acceso delegada (IPv6). Este estado tiene el formato de estructura PATH_OFFLOAD_STATE_DELEGATED. Actualmente, no hay ningún estado de ruta de acceso delegado. La estructura PATH_OFFLOAD_STATE_DELEGATED no contiene ninguna variable.
Ip6OffloadState
Especifica toda la información de estado de la ruta de acceso (IPv6), incluido el estado constante, almacenado en caché y ruta de acceso delegada. Este estado tiene el formato de estructura PATH_OFFLOAD_STATE_CONST, seguido de una estructura de PATH_OFFLOAD_STATE_CACHED, seguida de una estructura de PATH_OFFLOAD_STATE_DELEGATED.
TcpOffloadConstState
Especifica el estado TCP constante. Este estado tiene el formato de TCP_OFFLOAD_STATE_CONST estructura.
TcpOffloadCachedState
Especifica el estado TCP almacenado en caché. Este estado tiene el formato de TCP_OFFLOAD_STATE_CACHED estructura.
TcpOffloadDelegatedState
Especifica el estado TCP delegado. Este estado tiene el formato de TCP_OFFLOAD_STATE_DELEGATED estructura.
TcpOffloadResourceState
Reservado. Este OFFLOAD_STATE_TYPE valor, así como la estructura TCP_OFFLOAD_RESOURCE_STATE, no se usan actualmente.
TcpOffloadState
Especifica toda la información de estado TCP, incluida la constante, almacenada en caché y el estado TCP delegado. Este estado tiene el formato de estructura TCP_OFFLOAD_STATE_CONST, seguido de una estructura de TCP_OFFLOAD_STATE_CACHED, seguida de una estructura de TCP_OFFLOAD_STATE_DELEGATED.
FilterReservedOffloadState
Reservado para controladores de filtro.
NextBlock
Puntero a la siguiente estructura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST en la capa de estado de descarga (vecino, ruta de acceso o TCP) indicado por el miembro Type del miembro Header . NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estructuras vinculadas a través de punteros NextBlock siempre están en la misma capa del estado de descarga. Un valor NextBlock de NULL indica que no hay ninguna estructura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST siguiente adicional en este nivel.
_NDIS_MINIPORT_OFFLOAD_BLOCK_LIST
DependentBlockList
Puntero a una estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST que se encuentra en una capa dependiente del estado de descarga (una capa superior en el árbol de estado de descarga). Para la descarga de chimenea TCP:
- El miembro DependentBlockList de una estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST en la capa vecina solo puede apuntar a una estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST en la capa de ruta de acceso.
- El miembro DependentBlockList de una estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST en la capa de ruta de acceso solo puede apuntar a una estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST en la capa TCP.
- El miembro DependentBlockList de una estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST en la capa TCP siempre es NULL.
Status
El estado de finalización de una operación de descarga de inicio, descarga de consulta, descarga de actualización, invalida la descarga o finaliza la operación de descarga que el destino de descarga realizado en el estado asociado o al que hace referencia la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. En función de la operación, el destino de descarga escribe uno de los siguientes valores de NDIS_STATUS en el miembro Status :
NDIS_STATUS_SUCCESS
Iniciar descarga: el destino de descarga ha descargado correctamente el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST y el estado asociado a todas las estructuras de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dependientes inmediatamente.
Consulta, actualización, invalidar o finalizar la descarga: el destino de descarga realizó correctamente la operación en el estado asociado o al que hace referencia la estructura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.
NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS
Iniciar descarga: el destino de descarga descargada correctamente descargó el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, pero no pudo descargar el estado asociado a una o varias de las estructuras de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dependientes inmediatamente.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_FAILURE
Iniciar descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. La causa del error no se puede clasificar.
Consulta, actualización, invalidar o finalizar la descarga: el destino de descarga no pudo realizar la operación en el estado asociado o al que hace referencia la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.
NDIS_STATUS_RESOURCES
Iniciar descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST porque el destino de descarga no pudo asignar suficiente memoria del host.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_OFFLOAD_TCP_ENTRIES
Iniciar descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST porque el destino de descarga no pudo asignar un objeto de estado de conexión TCP.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_OFFLOAD_PATH_ENTRIES
Iniciar descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST porque el destino de descarga no pudo asignar un objeto de estado de ruta de acceso.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES
Iniciar descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST porque el destino de descarga no pudo asignar un objeto de estado vecino.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES
Iniciar descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST porque la pila de hosts especificó un miembro DlSourceAddress que no es NULL en el NEIGHBOR_OFFLOAD_STATE_CONST estructura y el destino de descarga no admite direcciones MAC de origen configurables o no puede aceptar direcciones MAC de origen adicionales.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES
Iniciar descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST porque el destino de descarga no pudo asignar una estructura de datos para la dirección IP de origen a la que hace referencia el puntero SourceAddress en el PATH_OFFLOAD_STATE_CONST estructura.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER
Iniciar descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST porque el destino de descarga no pudo asignar suficientes búferes de transmisión TCP.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER
Iniciar descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST porque el destino de descarga no pudo asignar suficientes búferes de recepción TCP.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW
Iniciar descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST porque el miembro InitialRcvWnd especificado en el TCP_OFFLOAD_STATE_CACHED estructura es mayor que el destino de descarga puede admitir.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_OFFLOAD_VLAN_ENTRIES
Iniciar descarga: el destino de descarga se ha quedado sin recursos para realizar el seguimiento de identificadores de VLAN adicionales.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_OFFLOAD_VLAN_MISMATCH
Iniciar descarga: el VlanId vecino no es cero y no coincide con uno de los identificadores de VLAN de la interfaz.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NDIS_STATUS_OFFLOAD_PATH_MTU
La MTU de ruta de acceso para la conexión TCP es mayor que la compatibilidad del destino de descarga.
Consulta, actualización, invalidar o finalizar la descarga: no es un valor de estado permitido.
NdisReserved[2]
Reservado para su uso por NDIS.
MiniportOffloadContext
Puntero a una ubicación de memoria en la que el destino de descarga escribe un valor PVOID. El valor PVOID hace referencia al área de contexto de descarga en la que el destino de descarga almacena el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. Si el estado es un nuevo estado que va a descargar el destino de descarga, la ubicación de memoria a la que apunta MiniportOffloadContext contiene un valor NULL . Después de descargar el estado, el destino de descarga escribe un valor PVOID en esta ubicación de memoria. El valor PVOID proporcionado por el destino de descarga hace referencia al área de contexto de descarga en la que se descargó el estado. Si el propio miembro MiniportOffloadContext es NULL, la estructura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST es un marcador de posición en el árbol de estado de descarga.
NdisOffloadHandle
Identificador que el destino de descarga proporciona en las llamadas posteriores a . Función NdisTcpOffloadEventHandler o Función NdisTcpOffloadReceiveHandler al realizar una indicación en el estado de descarga asociado a esta estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.
ProtocolReserved[2]
Reservado para su uso por controladores de protocolo, que pueden usar esta área para sus propios propósitos. Los destinos de descarga no deben modificar este valor.
MiniportReserved[2]
Reservado para su uso por destinos de descarga, que pueden usar esta área para sus propios fines, como poner en cola el estado de descarga asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.
ImReserved[2]
Reservado para su uso por conductores intermedios, que pueden usar esta área para sus propios propósitos. Los destinos de descarga no deben modificar este valor.
Scratch[2]
El destino de descarga puede usar esta área para el seguimiento interno. La información de esta área solo es válida mientras el destino de descarga tiene la propiedad del NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.
SourceHandle
Este miembro no es significativo para un destino de descarga. Un destino de descarga no debe modificar este miembro.
PortNumber
Número de puerto que identifica un puerto de adaptador de minipuerto. Para asignar un número de puerto del adaptador de miniporte, llame a la función NdisMAllocatePort . Un valor cero identifica el puerto predeterminado de un adaptador de minipuerto. Use el puerto predeterminado si el controlador de minipuerto no ha asignado puertos para el adaptador especificado.
NetBufferListChain
Cuando la pila de hosts especifica un valor NULL , NetBufferListChain no es significativo y el destino de descarga puede omitirlo.
Cuando la pila de hosts especifica un valor distinto de NULL , NetBufferListChain apunta a una estructura de NET_BUFFER_LIST que puede ser una estructura independiente o la primera estructura de una lista vinculada de estas estructuras. Cada estructura NET_BUFFER_LIST de la lista vinculada describe una estructura de NET_BUFFER . La estructura NET_BUFFER se asigna a una cadena de listas de descriptores de memoria (MDL). La NET_BUFFER_LIST y las estructuras asociadas están bloqueadas para que permanezcan residentes en memoria física. Sin embargo, no se asignan a la memoria del sistema.
Las MDL asociadas a las estructuras de NET_BUFFER contienen datos que la pila de hosts pasa al destino de descarga como parte de la operación de descarga. El destino de descarga completa estos datos de forma asincrónica en la pila de hosts llamando a la función NdisTcpOffloadXxxComplete adecuada. En la actualidad, la lista vinculada puede contener solo un tipo de datos: datos de envío pendientes. Para obtener más información, consulte Control de datos de envío pendientes durante y después de una operación de descarga.
Un destino de descarga puede pasar datos de envío pendientes a la pila de hosts al finalizar la descarga de una conexión TCP. En este caso, el destino de descarga especifica un valor distinto de NULL para el miembro NetBufferListChain al llamar al Función NdisMTerminateOffloadComplete . Si el destino de descarga no pasa datos de envío para una conexión TCP que se está finalizando, debe especificar un valor NULL para el miembro NetBufferListChain .
Comentarios
NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estructuras se pueden vincular juntas para crear el marco de un árbol de estado de descarga de chimenea TCP.
A través de NDIS, la pila de hosts pasa un puntero OffloadBlockList , que hace referencia a un árbol de estado de descarga a una de las siguientes funciones de un destino de descarga:
- NdisMInitiateOffloadComplete
- NdisMQueryOffloadStateComplete
- NdisMInvalidateOffloadComplete
- NdisMTerminateOffloadComplete
La pila de hosts y el destino de descarga usan los miembros *MiniportOffloadContext y NdisOffloadHandle de una estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST para hacer referencia al estado descargado. Para obtener más información, vea Almacenar y hacer referencia al estado descargado.
Una estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST puede realizar una de varias funciones en un árbol de estado de descarga. Puede funcionar como marcador de posición, un enlazador o puede transmitir un nuevo estado para que el destino de descarga lo descargue. Para obtener más información, vea Marcadores de posición , enlazadores y Nuevas descargas.
Antes de completar una descarga de inicio, realizar la descarga de consultas, actualizar la descarga, invalidar la descarga o finalizar la operación de descarga, un destino de descarga debe escribir el estado de finalización en el miembro Status de cada estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST en el árbol de estado.
Requisitos
Requisito | Valor |
---|---|
Header | ndischimney.h (incluya Ndischimney.h) |