estructura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST (ndischimney.h)
[La característica de descarga de chimenea TCP está en desuso y no debe usarse].
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 el formato de estructura NDIS_OBJECT_HEADER. La estructura NDIS_OBJECT_HEADER contiene el número de revisión de la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, el tipo de estado de descarga que sigue inmediatamente la estructura 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 tipo miembro de la estructura de NDIS_OBJECT_HEADER indica el tipo de estado de descarga e implicación, la estructura de estado de descarga específica (o estructuras) que siguen inmediatamente 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 estructura NEIGHBOR_OFFLOAD_STATE_CONST.
NeighborOffloadCachedState
Especifica el estado vecino almacenado en caché. Este estado tiene el formato NEIGHBOR_OFFLOAD_STATE_CACHED estructura.
NeighborOffloadDelegatedState
Especifica el estado vecino delegado. Este estado tiene el formato 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 una estructura NEIGHBOR_OFFLOAD_STATE_CONST, seguida de una estructura 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 PATH_OFFLOAD_STATE_CONST estructura.
Ip4OffloadCachedState
Especifica el estado de la ruta de acceso almacenada en caché (IPv4). Este estado tiene el formato PATH_OFFLOAD_STATE_CACHED estructura.
Ip4OffloadDelegatedState
Especifica el estado de ruta de acceso delegada (IPv4). Este estado tiene el formato 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.
Ip4OffloadState
Especifica todo el estado de la ruta de acceso (IPv4), incluido el estado constante, almacenado en caché y ruta de acceso delegada. Este estado tiene el formato de una estructura PATH_OFFLOAD_STATE_CONST, seguida de una estructura PATH_OFFLOAD_STATE_CACHED, seguida de una estructura 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 el 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 una estructura PATH_OFFLOAD_STATE_CONST, seguida de una estructura PATH_OFFLOAD_STATE_CACHED, seguida de una estructura PATH_OFFLOAD_STATE_DELEGATED.
TcpOffloadConstState
Especifica el estado TCP constante. Este estado tiene el formato estructura TCP_OFFLOAD_STATE_CONST.
TcpOffloadCachedState
Especifica el estado TCP almacenado en caché. Este estado tiene el formato TCP_OFFLOAD_STATE_CACHED estructura.
TcpOffloadDelegatedState
Especifica el estado TCP delegado. Este estado tiene el formato TCP_OFFLOAD_STATE_DELEGATED estructura.
TcpOffloadResourceState
Reservado. Este valor OFFLOAD_STATE_TYPE, así como la estructura TCP_OFFLOAD_RESOURCE_STATE, no se usan actualmente.
TcpOffloadState
Especifica toda la información de estado TCP, incluida la constante, la 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 de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST en la capa de estado de descarga (vecino, ruta de acceso o TCP) indicada por el miembro Type del miembro Encabezado. NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estructuras vinculadas a través de punteros de 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 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 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 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
Estado de finalización de una operación de descarga de inicio, descarga de consulta, descarga de actualización, invalidar la descarga o finalizar la operación de descarga que el destino de descarga realizó 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 Estado de:
NDIS_STATUS_SUCCESS
Iniciar la descarga: el destino de descarga descargaba 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 ha descargado correctamente 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. No se puede clasificar la causa del error.
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 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 la descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST porque la pila host especificó un miembro noNULLDlSourceAddress en la 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 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 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 es distinto de cero y no coincide con uno de los identificadores 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 ruta de acceso MTU para la conexión TCP es mayor que la compatibilidad con el 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 de 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 llamadas posteriores a . función de 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 los 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 fines. 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 miniporte. 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 miniport. Use el puerto predeterminado si el controlador de miniporte no ha asignado puertos para el adaptador especificado.
NetBufferListChain
Cuando la pila de hosts especifica un valor de NULL, netBufferListChain no es significativo y el destino de descarga puede omitirlo.
Cuando la pila de hosts especifica un valor deNULL no, 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 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 la 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 mediante una llamada a la función NdisTcpOffloadXxxComplete. En la actualidad, la lista vinculada puede contener solo un tipo de datos: datos de envío pendientes. Para obtener más información, vea 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 deque no es NULL para el NetBufferListChain miembro 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 de NetBufferListChain.
Observaciones
NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estructuras se pueden vincular juntas para crear el marco de una chimenea TCP árbol de estado de descarga.
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 *MiniportOffloadContext y NdisOffloadHandle miembros 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 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 operación de descarga de inicio, descarga de consulta, descarga de actualizaciones, invalidación de la descarga o finalización de la descarga, un destino de descarga debe escribir el estado de finalización en el estado de estado miembro de cada estructura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST en el árbol de estado.
Requisitos
Requisito | Valor |
---|---|
encabezado de | ndischimney.h (incluya Ndischimney.h) |