estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST (ndischimney.h)

[O recurso de descarregamento de chaminé TCP foi preterido e não deve ser usado.]

A estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST.

Sintaxe

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;

Membros

Header

O cabeçalho da estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST. O cabeçalho é formatado como uma estrutura NDIS_OBJECT_HEADER . A estrutura NDIS_OBJECT_HEADER contém o número de revisão da estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, o tipo de estado de descarregamento que segue imediatamente a estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST na memória e o tamanho da estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, incluindo o cabeçalho, em bytes.

O membro Type da estrutura NDIS_OBJECT_HEADER indica o tipo de estado de descarregamento e, por implicação, a estrutura de estado de descarregamento específica (ou estruturas) que segue imediatamente a estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST na memória.

Há suporte para os seguintes valores de OFFLOAD_STATE_TYPE:

NeighborOffloadConstState

Especifica o estado de vizinho constante. Esse estado é formatado como um NEIGHBOR_OFFLOAD_STATE_CONST estrutura.

NeighborOffloadCachedState

Especifica o estado de vizinho armazenado em cache. Esse estado é formatado como um NEIGHBOR_OFFLOAD_STATE_CACHED estrutura.

NeighborOffloadDelegatedState

Especifica o estado do vizinho delegado. Esse estado é formatado como um NEIGHBOR_OFFLOAD_STATE_DELEGATED estrutura.

NeighborOffloadState

Especifica todo o estado vizinho, incluindo o estado de vizinho constante, armazenado em cache e delegado. Esse estado é formatado como uma estrutura NEIGHBOR_OFFLOAD_STATE_CONST, seguida por uma estrutura NEIGHBOR_OFFLOAD_STATE_CACHED, seguida por uma estrutura NEIGHBOR_OFFLOAD_STATE_DELEGATED.

Ip4OffloadConstState

Especifica o estado do caminho constante (IPv4). Esse estado é formatado como um PATH_OFFLOAD_STATE_CONST estrutura.

Ip4OffloadCachedState

Especifica o estado do caminho armazenado em cache (IPv4). Esse estado é formatado como um PATH_OFFLOAD_STATE_CACHED estrutura.

Ip4OffloadDelegatedState

Especifica o estado do caminho delegado (IPv4). Esse estado é formatado como um PATH_OFFLOAD_STATE_DELEGATED estrutura. Atualmente, não há nenhum estado de caminho delegado. A estrutura PATH_OFFLOAD_STATE_DELEGATED não contém nenhuma variável.

Ip4OffloadState

Especifica todo o estado do caminho (IPv4), incluindo o estado constante, armazenado em cache e caminho delegado. Esse estado é formatado como uma estrutura PATH_OFFLOAD_STATE_CONST, seguida por uma estrutura PATH_OFFLOAD_STATE_CACHED, seguida por uma estrutura PATH_OFFLOAD_STATE_DELEGATED.

Ip6OffloadConstState

Especifica o estado do caminho constante (IPv6). Esse estado é formatado como uma estrutura PATH_OFFLOAD_STATE_CONST.

Ip6OffloadCachedState

Especifica o estado do caminho armazenado em cache (IPv6). Esse estado é formatado como uma estrutura de PATH_OFFLOAD_STATE_CACHED.

Ip6OffloadDelegatedState

Especifica o estado do caminho delegado (IPv6). Esse estado é formatado como uma estrutura PATH_OFFLOAD_STATE_DELEGATED. Atualmente, não há nenhum estado de caminho delegado. A estrutura PATH_OFFLOAD_STATE_DELEGATED não contém nenhuma variável.

Ip6OffloadState

Especifica todo o estado do caminho (IPv6), incluindo o estado constante, armazenado em cache e caminho delegado. Esse estado é formatado como uma estrutura PATH_OFFLOAD_STATE_CONST, seguida por uma estrutura PATH_OFFLOAD_STATE_CACHED, seguida por uma estrutura PATH_OFFLOAD_STATE_DELEGATED.

TcpOffloadConstState

Especifica o estado TCP constante. Esse estado é formatado como um TCP_OFFLOAD_STATE_CONST estrutura.

TcpOffloadCachedState

Especifica o estado TCP armazenado em cache. Esse estado é formatado como um TCP_OFFLOAD_STATE_CACHED estrutura.

TcpOffloadDelegatedState

Especifica o estado TCP delegado. Esse estado é formatado como um TCP_OFFLOAD_STATE_DELEGATED estrutura.

TcpOffloadResourceState

Reservado. Esse valor OFFLOAD_STATE_TYPE, bem como a estrutura TCP_OFFLOAD_RESOURCE_STATE, não são usados no momento.

TcpOffloadState

Especifica todo o estado TCP, incluindo o estado TCP constante, armazenado em cache e delegado. Esse estado é formatado como uma estrutura TCP_OFFLOAD_STATE_CONST, seguida por uma estrutura TCP_OFFLOAD_STATE_CACHED, seguida por uma estrutura TCP_OFFLOAD_STATE_DELEGATED.

FilterReservedOffloadState

Reservado para drivers de filtro.

NextBlock

Um ponteiro para a próxima estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST na camada de estado de descarregamento (vizinho, caminho ou TCP) indicada pelo membro Type do membro Header . NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST estruturas vinculadas por meio de ponteiros NextBlock estão sempre na mesma camada do estado de descarregamento. Um valor NextBlock de NULL indica que não há nenhuma estrutura de próximo NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST adicional nesse nível.

_NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST

DependentBlockList

Um ponteiro para uma estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST que está em uma camada dependente do estado de descarregamento (uma camada mais alta na árvore de estado de descarregamento).

Para descarregamento de chaminé TCP:

O membro DependentBlockList de uma estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST na camada vizinha pode apontar apenas para uma estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST na camada de caminho. O membro DependentBlockList de uma estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST na camada de caminho pode apontar apenas para uma estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST na camada TCP. O membro DependentBlockList de uma estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST na camada TCP é sempre NULL.

Um valor DependentBlockList de NULL indica que não há nenhuma estrutura de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST dependente.

Status

O status de conclusão de um descarregamento iniciado, descarregamento de consulta, descarregamento de atualização, descarregamento invalidado ou operação de descarregamento final que o destino de descarregamento executou no estado associado ou referenciado pela estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST. Dependendo da operação, o NDIS grava um dos seguintes valores NDIS_STATUS no membro Status :

NDIS_STATUS_SUCCESS

Iniciar descarregamento: o destino de descarregamento subjacente descarregou com êxito o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST e ao estado associado a todas as estruturas de PROTOCOL_MINIPORT_OFFLOAD_BLOCK_LIST imediatamente dependentes.

Consultar, atualizar, invalidar ou encerrar o descarregamento: o destino de descarregamento executou com êxito a operação no estado associado ou referenciado pela estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

Iniciar descarregamento: o destino de descarregamento subjacente descarregou com êxito o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, mas não conseguiu descarregar o estado associado a uma ou mais das estruturas de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST imediatamente dependentes.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_FAILURE

Iniciar descarregamento: o destino de descarregamento subjacente falhou ao descarregar o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST. A causa da falha não pode ser categorizada.

Consultar, atualizar, invalidar ou encerrar o descarregamento: o destino de descarregamento falhou ao executar a operação no estado associado ou referenciado pela estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_RESOURCES

Iniciar descarregamento: o destino de descarregamento falhou ao descarregar o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST porque o destino de descarregamento não pôde alocar memória de host suficiente.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_OFFLOAD_TCP_ENTRIES

Iniciar descarregamento: o destino de descarregamento falhou ao descarregar o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST porque o destino de descarregamento não pôde alocar um objeto de estado de conexão TCP.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_OFFLOAD_PATH_ENTRIES

Iniciar descarregamento: o destino de descarregamento falhou ao descarregar o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST porque o destino de descarregamento não pôde alocar um objeto de estado de caminho.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES

Iniciar descarregamento: o destino de descarregamento falhou ao descarregar o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST porque o destino de descarregamento não pôde alocar um objeto de estado vizinho.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES

Iniciar descarregamento: o destino de descarregamento falhou ao descarregar o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST porque a pilha de host especificou um membro DlSourceAddress não NULL no NEIGHBOR_OFFLOAD_STATE_CONST estrutura e o destino de descarregamento não dá suporte a endereços MAC de origem configuráveis ou não pode aceitar endereços MAC de origem adicionais.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES

Iniciar descarregamento: o destino de descarregamento falhou ao descarregar o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST porque o destino de descarregamento não pôde alocar uma estrutura de dados para o endereço IP de origem referenciado pelo ponteiro SourceAddress no PATH_OFFLOAD_STATE_CONST estrutura.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER

Iniciar descarregamento: o destino de descarregamento falhou ao descarregar o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST porque o destino de descarregamento não pôde alocar buffers de transmissão TCP suficientes.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER

Iniciar descarregamento: o destino de descarregamento falhou ao descarregar o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST porque o destino de descarregamento não pôde alocar buffers de recebimento de TCP suficientes.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW

Iniciar descarregamento: o destino de descarregamento falhou ao descarregar o estado associado à estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST porque o membro InitialRcvWnd especificado no TCP_OFFLOAD_STATE_CACHED estrutura é maior do que o destino de descarregamento pode dar suporte.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_OFFLOAD_VLAN_ENTRIES

Iniciar descarregamento: o destino de descarregamento ficou sem recursos para acompanhar IDs de VLAN adicionais.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_OFFLOAD_VLAN_MISMATCH

Iniciar descarregamento: o VlanId vizinho é diferente de zero e não corresponde a uma das IDs de VLAN da interface.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NDIS_STATUS_OFFLOAD_PATH_MTU

Iniciar descarregamento: o caminho MTU para a conexão TCP é maior do que o destino de descarregamento dá suporte.

Consultar, atualizar, invalidar ou encerrar o descarregamento: não é permitido status valor.

NdisReserved[3]

Reservado para uso pelo NDIS.

OffloadHandle

Um ponteiro para uma estrutura NDIS_OFFLOAD_HANDLE . A estrutura NDIS_OFFLOAD_HANDLE representa um protocolo ou o contexto do driver intermediário para um objeto de estado descarregado.

ProtocolReserved[2]

Reservado para uso por drivers de protocolo, que podem usar essa área para suas próprias finalidades.

MiniportReserved[2]

Reservado para uso por destinos de descarregamento ou a parte do miniporto de um driver intermediário.

ImReserved[2]

Reservado para uso por drivers intermediários, que podem usar essa área para suas próprias finalidades.

Scratch[2]

O driver de protocolo ou o driver intermediário pode usar essa área para acompanhamento interno. As informações nessa área são válidas somente enquanto o driver tem a propriedade do NDIS_PROTOCOL_OFFLOAD_BLOCK_LIS T.

SourceHandle

Esse membro não é significativo para um protocolo ou driver intermediário. Um protocolo ou driver intermediário não deve modificar esse membro.

Ao propagar a conclusão de uma operação de manipulação de estado, um driver intermediário copia o
SourceHandle que ele armazenou em sua entrada de chamada de mensagens instantâneas para o membro SourceHandle do NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estrutura que passa para a função NdisMXxxComplete.

PortNumber

Um número de porta que identifica uma porta de adaptador de miniporta. Para atribuir um número de porta do adaptador de miniporta, chame a função NdisMAllocatePort . Um valor zero identifica a porta padrão de um adaptador de miniporta. Use a porta padrão se o driver de miniporto não tiver alocado portas para o adaptador especificado.

NetBufferListChain

Quando o protocolo ou o driver intermediário especifica um valor NULL , NetBufferListChain não é significativo e pode ser ignorado pelo driver subjacente ou pelo destino de descarregamento.

Quando um protocolo ou driver intermediário especifica um valor não NULL , NetBufferListChain aponta para uma estrutura NET_BUFFER_LIST que pode ser uma estrutura autônoma ou a primeira estrutura em uma lista vinculada dessas estruturas. Cada estrutura NET_BUFFER_LIST na lista vinculada descreve uma estrutura NET_BUFFER . A estrutura NET_BUFFER é mapeada para uma cadeia de MDLs (listas de descritores de memória). As NET_BUFFER_LIST e as estruturas associadas são bloqueadas para que permaneçam residentes na memória física. No entanto, eles não são mapeados para a memória do sistema.

Os MDLs associados às estruturas NET_BUFFER contêm dados que estão sendo transmitidos como parte de uma operação de manipulação de estado ou a conclusão de tal operação. No momento, a lista vinculada pode conter apenas um tipo de dados: dados de envio pendentes. Para obter mais informações sobre como enviar dados, consulte Manipulando dados de envio pendentes durante e após uma operação de descarregamento.

Um destino de descarregamento ou driver intermediário pode passar dados de envio pendentes para o driver ou pilha de host excessivamente ao encerrar o descarregamento de uma conexão TCP. Nesse caso, o destino de descarregamento especifica um valor não NULL para o membro NetBufferListChain ao chamar o Função NdisMTerminateOffloadComplete . Se o destino de descarregamento não estiver passando dados de envio para uma conexão TCP que está sendo encerrada, ele especificará um valor NULL para o membro NetBufferListChain .

Comentários

Um driver intermediário cria uma estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST de um NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estrutura ao propagar uma operação de manipulação de estado. Quando propagando a conclusão de tal operação, um driver intermediário usa uma estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST para construir uma estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

Uma estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST pode ser seguida imediatamente na memória por uma estrutura de estado de descarregamento que contém o estado a ser (ou que foi) descarregado, consultado, atualizado, invalidado ou encerrado. O membro Type do Cabeçalho da estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST especifica o tipo de estado de descarregamento e, por implicação, a estrutura de estado de descarregamento específica (ou estruturas) que seguem a estrutura NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST na memória.

Requisitos

Requisito Valor
Cabeçalho ndischimney.h (inclua Ndischimney.h)

Confira também

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

ProtocoloInitiateOffloadComplete ProtocolInvalidateOffloadComplete ProtocolQueryOffloadComplete ProtocolTerminateOffloadComplete ProtocolUpdateOffloadComplete

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED