estructura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST (ndischimney.h)

[La característica de descarga de chimenea TCP está en desuso y no se debe usar.]

Estructura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST.

Sintaxis

typedef struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST {
  IN NDIS_OBJECT_HEADER                Header;
  IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
  struct                               _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
  IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
  struct                               _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
#endif
  OUT NDIS_STATUS                      Status;
  IN PVOID                             NdisReserved[3];
  IN OUT PNDIS_OFFLOAD_HANDLE          OffloadHandle;
  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_PROTOCOL_OFFLOAD_BLOCK_LIST, *PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;

Miembros

Header

Encabezado de la estructura NDIS_PROTOCOL_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_PROTOCOL_OFFLOAD_BLOCK_LIST, el tipo de estado de descarga que sigue inmediatamente a la estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST en memoria y el tamaño de la estructura de NDIS_PROTOCOL_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 la estructura de NDIS_PROTOCOL_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 todo el 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 todo el estado de ruta de acceso (IPv6), 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.

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 todo el 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_PROTOCOL_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_PROTOCOL_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_PROTOCOL_OFFLOAD_BLOCK_LIST siguiente adicional en este nivel.

_NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST

DependentBlockList

Puntero a una estructura de NDIS_PROTOCOL_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_PROTOCOL_OFFLOAD_BLOCK_LIST en la capa vecina solo puede apuntar a una estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST en la capa de ruta de acceso. El miembro DependentBlockList de una estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST en la capa de ruta de acceso solo puede apuntar a una estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST en la capa TCP. El miembro DependentBlockList de una estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST en la capa TCP siempre es NULL.

Un valor DependentBlockList de NULL indica que no hay ninguna estructura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST dependiente.

Status

Estado de finalización de una 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 realizó en el estado asociado o al que hace referencia la estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST. En función de la operación, NDIS escribe uno de los siguientes valores NDIS_STATUS en el miembro Status :

NDIS_STATUS_SUCCESS

Iniciar descarga: el destino de descarga subyacente ha descargado correctamente el estado asociado a la estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST y el estado asociado a todas las estructuras de PROTOCOL_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 de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

Iniciar descarga: el destino de descarga subyacente ha descargado correctamente el estado asociado a la estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, pero no pudo descargar el estado asociado a una o varias de las estructuras de NDIS_PROTOCOL_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 subyacente no pudo descargar el estado asociado a la estructura de NDIS_PROTOCOL_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 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_RESOURCES

Iniciar descarga: el destino de descarga no pudo descargar el estado asociado a la estructura de NDIS_PROTOCOL_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_PROTOCOL_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_PROTOCOL_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_PROTOCOL_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_PROTOCOL_OFFLOAD_BLOCK_LIST porque la pila de hosts especificó un miembro DlSourceAddress no 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_PROTOCOL_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 . 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_PROTOCOL_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_PROTOCOL_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_PROTOCOL_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 un seguimiento de los 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 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

Iniciar descarga: 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[3]

Reservado para su uso por NDIS.

OffloadHandle

Puntero a una estructura de NDIS_OFFLOAD_HANDLE . La estructura NDIS_OFFLOAD_HANDLE representa un protocolo o el contexto del controlador intermedio para un objeto de estado descargado.

ProtocolReserved[2]

Reservado para su uso por los controladores de protocolo, que pueden usar esta área para sus propios fines.

MiniportReserved[2]

Reservado para su uso por destinos de descarga o la parte de minipuerto de un controlador intermedio.

ImReserved[2]

Reservado para su uso por los conductores intermedios, que pueden usar esta área para sus propios fines.

Scratch[2]

El controlador de protocolo o el controlador intermedio pueden usar esta área para el seguimiento interno. La información de esta área solo es válida mientras el controlador tiene la propiedad de . NDIS_PROTOCOL_OFFLOAD_BLOCK_LIS T.

SourceHandle

Este miembro no es significativo para un protocolo o un controlador intermedio. Un protocolo o controlador intermedio no debe modificar este miembro.

Al propagar la finalización de una operación de manipulación de estado, un controlador intermedio copia el
SourceHandle que almacenó en su entrada de llamada de MI al miembro SourceHandle del NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estructura que pasa a la función NdisMXxxComplete.

PortNumber

Número de puerto que identifica un puerto de adaptador de minipuerto. Para asignar un número de puerto de 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 el protocolo o el controlador intermedio especifican un valor NULL , NetBufferListChain no es significativo y el controlador subyacente o el destino de descarga pueden omitirse.

Cuando un protocolo o un controlador intermedio especifica un valor distinto de NULL , NetBufferListChain apunta a una estructura NET_BUFFER_LIST que puede ser una estructura independiente o la primera estructura de una lista vinculada de dichas 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.

Los MDL asociados a las estructuras de NET_BUFFER contienen datos que se transmiten como parte de una operación de manipulación de estado o la finalización de dicha operación. En la actualidad, la lista vinculada puede contener solo un tipo de datos: datos de envío pendientes. Para obtener más información sobre el envío de datos, consulte Control de datos de envío pendientes durante y después de una operación de descarga.

Un destino de descarga o un controlador intermedio pueden pasar datos de envío pendientes al controlador o a la pila de hosts excesivamente 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, especifica un valor NULL para el miembro NetBufferListChain .

Comentarios

Un controlador intermedio crea una estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST a partir de un NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estructura al propagar una operación de manipulación de estado. Cuando propagando la finalización de este tipo de operación, un controlador intermedio usa una estructura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST para construir una estructura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

Una estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST se puede seguir inmediatamente en la memoria mediante una estructura de estado de descarga que contiene el estado que se va a descargar (o que se ha descargado), consultado, actualizado, invalidado o finalizado. El miembro Type del encabezado de la estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST especifica el tipo de estado de descarga y, por implicación, la estructura de estado de descarga específica (o estructuras) que siguen la estructura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST en memoria.

Requisitos

Requisito Valor
Header ndischimney.h (incluya Ndischimney.h)

Consulte también

NDIS_OBJECT_HEADER

NEIGHBOR_OFFLOAD_STATE_CACHED

NEIGHBOR_OFFLOAD_STATE_CONST

NEIGHBOR_OFFLOAD_STATE_DELEGATED

NdisInitiateOffload

NdisInvalidateOffload

NdisMAllocatePort

NdisQueryOffload

NdisTerminateOffload

NdisUpdateOffload

PATH_OFFLOAD_STATE_CACHED

PATH_OFFLOAD_STATE_CONST

PATH_OFFLOAD_STATE_DELEGATED

ProtocolInitiateOffloadComplete ProtocolInvalidateOffloadComplete ProtocolQueryOffloadComplete ProtocolTerminateOffloadComplete ProtocolUpdateOffloadComplete

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED