estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST (ndischimney.h)

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

A estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST é o bloco de construção básico de uma árvore de estado de descarregamento de chaminé TCP. Uma árvore de estado de descarregamento pode conter uma ou mais estruturas de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

Sintaxe

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;

Membros

Header

O cabeçalho da estrutura NDIS_MINIPORT_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_MINIPORT_OFFLOAD_BLOCK_LIST, o tipo de estado de descarregamento que segue imediatamente a estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST na memória e o tamanho da estrutura NDIS_MINIPORT_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_MINIPORT_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 todas as informações de estado do 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 todas as informações de 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 todas as informações de 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 o próximo NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estrutura na camada de estado de descarregamento (vizinho, caminho ou TCP) indicado pelo membro Type do membro Header . NDIS_MINIPORT_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_MINIPORT_OFFLOAD_BLOCK_LIST adicional nesse nível.

_NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

DependentBlockList

Um ponteiro para uma estrutura NDIS_MINIPORT_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 de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST na camada vizinha pode apontar apenas para uma estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST na camada de caminho.
  • O membro DependentBlockList de uma estrutura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST na camada de caminho pode apontar apenas para uma estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST na camada TCP.
  • O membro DependentBlockList de uma estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST na camada TCP é sempre NULL.
Um valor DependentBlockList de NULL indica que não há nenhuma estrutura de NDIS_MINIPORT_OFFLOAD_BLOCK_LIST dependente.

Status

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

NDIS_STATUS_SUCCESS

Iniciar descarregamento: o destino de descarregamento descarregou com êxito o estado associado à estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST e ao estado associado a todas as estruturas de NDIS_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_MINIPORT_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

Iniciar descarregamento: o destino de descarregamento descarregou com êxito o estado associado à estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, mas não conseguiu descarregar o estado associado a uma ou mais das estruturas de NDIS_MINIPORT_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 falhou ao descarregar o estado associado à estrutura NDIS_MINIPORT_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_MINIPORT_OFFLOAD_BLOCK_LIST.

NDIS_STATUS_RESOURCES

Iniciar descarregamento: o destino de descarregamento falhou ao descarregar o estado associado à estrutura NDIS_MINIPORT_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_MINIPORT_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_MINIPORT_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_MINIPORT_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_MINIPORT_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_MINIPORT_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_MINIPORT_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_MINIPORT_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_MINIPORT_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 não é 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

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[2]

Reservado para uso pelo NDIS.

MiniportOffloadContext

Um ponteiro para um local de memória no qual o destino de descarregamento grava um valor PVOID. O valor PVOID faz referência à área de contexto de descarregamento na qual o destino de descarregamento armazena o estado associado à estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. Se o estado for um novo estado a ser descarregado pelo destino de descarregamento, o local de memória apontado por MiniportOffloadContext conterá um valor NULL . Depois de descarregar o estado, o destino de descarregamento grava um valor PVOID nesse local de memória. O valor PVOID fornecido pelo destino de descarregamento faz referência à área de contexto de descarregamento na qual o estado foi descarregado. Se o próprio membro MiniportOffloadContext for NULL, a estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST será um espaço reservado na árvore de estado de descarregamento.

NdisOffloadHandle

O identificador que o destino de descarregamento fornece em chamadas subsequentes para o Função NdisTcpOffloadEventHandler ou a Função NdisTcpOffloadReceiveHandler ao fazer uma indicação sobre o estado de descarregamento associado a essa estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

ProtocolReserved[2]

Reservado para uso por drivers de protocolo, que podem usar essa área para suas próprias finalidades. Os destinos de descarregamento não devem modificar esse valor.

MiniportReserved[2]

Reservado para uso por destinos de descarregamento, que podem usar essa área para suas próprias finalidades, como enfileirar o estado de descarregamento associado à estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

ImReserved[2]

Reservado para uso por drivers intermediários, que podem usar essa área para suas próprias finalidades. Os destinos de descarregamento não devem modificar esse valor.

Scratch[2]

O destino de descarregamento pode usar essa área para acompanhamento interno. As informações nessa área são válidas somente enquanto o destino de descarregamento tem a propriedade do NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

SourceHandle

Esse membro não é significativo para um destino de descarregamento. Um destino de descarregamento não deve modificar esse membro.

PortNumber

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

NetBufferListChain

Quando a pilha de host especifica um valor NULL , NetBufferListChain não é significativo e pode ser ignorado pelo destino de descarregamento.

Quando a pilha de host 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). Os NET_BUFFER_LIST e as estruturas associadas são bloqueados para que permaneçam residentes na memória física. No entanto, eles não são mapeados na memória do sistema.

Os MDLs associados às estruturas NET_BUFFER contêm dados que a pilha de host está passando para o destino de descarregamento como parte da operação de descarregamento. O destino de descarregamento conclui esses dados de forma assíncrona de volta à pilha de host chamando a função NdisTcpOffloadXxxComplete apropriada. No momento, a lista vinculada pode conter apenas um tipo de dados: dados de envio pendentes. Para obter mais informações, consulte Manipulando dados de envio pendentes durante e após uma operação de descarregamento.

Um destino de descarregamento pode passar dados de envio pendentes para a pilha de host 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 deverá especificar um valor NULL para o membro NetBufferListChain .

Comentários

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estruturas podem ser vinculadas para criar a estrutura de uma árvore de estado de descarregamento de chaminé TCP.

Por meio do NDIS, a pilha de host passa um ponteiro OffloadBlockList , que faz referência a uma árvore de estado de descarregamento para uma das seguintes funções de um destino de descarregamento:

O destino de descarregamento retorna a árvore para a pilha de host passando o mesmo ponteiro para a função de conclusão correspondente: Uma estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST pode ser seguida imediatamente na memória por uma estrutura de estado de descarregamento que contém o estado a ser descarregado, consultado, atualizado, invalidado ou encerrado. O membro Type do Cabeçalho da estrutura NDIS_MINIPORT_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_MINIPORT_OFFLOAD_BLOCK_LIST na memória.

O destino de descarregamento e pilha de host usa os membros *MiniportOffloadContext e NdisOffloadHandle de uma estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST para fazer referência ao estado descarregado. Para obter mais informações, consulte Armazenando e referenciando o estado descarregado.

Uma estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST pode executar uma das várias funções em uma árvore de estado de descarregamento. Ele pode funcionar como um espaço reservado, um vinculador ou pode transmitir um novo estado a ser descarregado pelo destino de descarregamento. Para obter mais informações, consulte Espaços reservados, vinculadores e novos descarregamentos.

Antes de concluir uma operação de descarregamento, descarregamento de consulta, descarregamento de atualização, descarregamento invalidado ou encerramento de descarregamento, um destino de descarregamento deve gravar o status de conclusão no membro Status de cada estrutura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST na árvore de estado.

Requisitos

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

Confira também

MiniportInitiateOffload

MiniportInvalidateOffload

MiniportQueryOffload

MiniportTerminateOffload

MiniportUpdateOffload

NDIS_OBJECT_HEADER

NEIGHBOR_OFFLOAD_STATE_CACHED

NEIGHBOR_OFFLOAD_STATE_DELEGATED

NdisMAllocatePort

NdisMInitiateOffloadComplete

NdisMInvalidateOffloadComplete NdisMQueryOffloadStateComplete NdisMTerminateOffloadComplete

NdisMUpdateOffloadComplete

NdisTcpOffloadEventHandler

NdisTcpOffloadReceiveHandler

PATH_OFFLOAD_STATE_CACHED

PATH_OFFLOAD_STATE_CONST

PATH_OFFLOAD_STATE_DELEGATED

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED