Compartilhar via


Função NdisFIndicateReceiveNetBufferLists (ndis.h)

Um driver de filtro chama NdisFIndicateReceiveNetBufferLists para indicar que recebeu dados de rede. Para obter mais informações, consulte Recebendo dados em um driver de filtro.

Sintaxe

void NdisFIndicateReceiveNetBufferLists(
  [in] NDIS_HANDLE      NdisFilterHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] NDIS_PORT_NUMBER PortNumber,
  [in] ULONG            NumberOfNetBufferLists,
  [in] ULONG            ReceiveFlags
);

Parâmetros

[in] NdisFilterHandle

O identificador NDIS que identifica esse módulo de filtro. O NDIS passou o identificador para o driver de filtro em uma chamada para a função FilterAttach .

[in] NetBufferLists

Uma lista vinculada de estruturas de NET_BUFFER_LIST . Cada estrutura NET_BUFFER_LIST contém uma estrutura NET_BUFFER .

[in] PortNumber

Um número de porta que identifica uma porta de adaptador de miniporta. Os números da porta do adaptador miniport são atribuídos chamando a função NdisMAllocatePort . Um valor zero identifica a porta padrão de um adaptador de miniporta.

[in] NumberOfNetBufferLists

O número de estruturas NET_BUFFER_LIST que estão na lista vinculada de estruturas em NetBufferLists .

[in] ReceiveFlags

Sinalizadores que definem atributos para a indicação de recebimento. Os sinalizadores podem ser combinados com uma operação OR. Para limpar todos os sinalizadores, defina esse membro como zero. Essa função dá suporte aos seguintes sinalizadores:

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

Especifica que o IRQL atual está DISPATCH_LEVEL. Para obter mais informações sobre esse sinalizador, consulte Dispatch IRQL Tracking.

NDIS_RECEIVE_FLAGS_RESOURCES

Especifica que o driver de filtro recupera a propriedade das estruturas NET_BUFFER_LIST e quaisquer estruturas NET_BUFFER anexadas imediatamente após a chamada para NdisFIndicateReceiveNetBufferLists retorna.

NDIS_RECEIVE_FLAGS_SINGLE_ETHER_TYPE

Especifica que todas as estruturas de NET_BUFFER_LIST na lista em NetBufferLists têm o mesmo tipo de protocolo (EtherType).

NDIS_RECEIVE_FLAGS_SINGLE_VLAN

Especifica que todas as estruturas NET_BUFFER_LIST na lista em NetBufferLists pertencem à mesma VLAN.

NDIS_RECEIVE_FLAGS_PERFECT_FILTERED

Especifica que todas as estruturas de NET_BUFFER_LIST na lista em NetBufferLists incluem apenas dados que correspondam ao filtro de pacote e à lista de endereços multicast atribuídos ao adaptador de miniporto.

NDIS_RECEIVE_FLAGS_SINGLE_QUEUE

Especifica que todas as estruturas de NET_BUFFER_LIST na lista em NetBufferLists pertencem à mesma fila de VMs. Um driver de miniporta deve definir esse sinalizador para todas as indicações de recebimento em uma fila se o sinalizador NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION foi definido no membro Flags do NDIS_RECEIVE_QUEUE_PARAMETERS estrutura quando essa fila foi alocada.

NDIS_RECEIVE_FLAGS_SHARED_MEMORY_INFO_VALID

Especifica que todas as estruturas de NET_BUFFER_LIST na lista em NetBufferLists contêm informações de memória compartilhada que são válidas. Quando esse sinalizador é definido em uma NET_BUFFER_LIST recebida, o NDIS trata as informações de memória compartilhada como válidas. Quando esse sinalizador não está definido, o NDIS e os drivers ignoram as informações de memória compartilhada. Por exemplo, drivers intermediários que modificam dados de pacote podem usar esse sinalizador para determinar se os dados devem ser copiados. Os drivers de miniport podem usar o sinalizador para determinar como liberar a memória associada a uma fila de VM quando uma fila é excluída.

NDIS_RECEIVE_FLAGS_MORE_NBLS

Reservado.

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE

Se esse sinalizador for definido, todos os pacotes em uma lista vinculada de estruturas de NET_BUFFER_LIST originaram-se da mesma porta de origem do comutador extensível do Hyper-V.

Para obter mais informações, consulte Sinalizadores de envio e recebimento de comutador extensível do Hyper-V.

Nota Se cada pacote na lista vinculada de estruturas NET_BUFFER_LIST usar a mesma porta de origem, a extensão deverá definir o sinalizador NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE no parâmetro ReturnFlags de FilterReturnNetBufferLists quando a solicitação de recebimento for concluída. A extensão deverá definir esse sinalizador no parâmetro ReturnFlags se chamar NdisFReturnNetBufferLists para retornar pacotes que ele não originou ou cloneu.
 

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP

Se esse sinalizador for definido, todos os pacotes em uma lista vinculada de estruturas de NET_BUFFER_LIST deverão ser encaminhados para a mesma porta de destino do comutador extensível.

Para obter mais informações, consulte Sinalizadores de envio e recebimento de comutador extensível do Hyper-V.

Retornar valor

Nenhum

Comentários

Quando um driver de filtro chama a função NdisFIndicateReceiveNetBufferLists , ele especifica uma lista de estruturas NET_BUFFER_LIST no parâmetro NetBufferLists . O NDIS passa as estruturas de NET_BUFFER_LIST para os drivers sobressociá-los.

Os drivers de filtro podem chamar NdisFIndicateReceiveNetBufferLists para originar uma indicação de recebimento.

Os drivers de filtro também podem filtrar as indicações de recebimento originadas por drivers subjacentes. O NDIS chama o Função FilterReceiveNetBufferLists para filtrar essas indicações de recebimento.

Um driver de filtro deve definir o membro SourceHandle de cada estrutura NET_BUFFER_LIST que ele origina para o mesmo valor que o parâmetro NdisFilterHandle . O driver de filtro não deve modificar o membro SourceHandle em nenhuma estrutura NET_BUFFER_LIST que ele não tenha se originado.

O driver de filtro deve inicializar corretamente as estruturas de NET_BUFFER_LIST , estruturas NET_BUFFER anexadas e quaisquer MDLs anexadas.

Se um driver de filtro chamar a função NdisFIndicateReceiveNetBufferLists e limpar o sinalizador NDIS_RECEIVE_FLAG_RESOURCES no parâmetro ReceiveFlags , o NDIS retornará as estruturas de NET_BUFFER_LIST indicadas para o driver de filtro Função FilterReturnNetBufferLists . Nesse caso, o driver de filtro não deve recuperar as estruturas de NET_BUFFER_LIST até que o NDIS retorne as estruturas de NET_BUFFER_LIST para FilterReturnNetBufferLists.

Se um driver de filtro chamar NdisFIndicateReceiveNetBufferLists e definir o sinalizador NDIS_RECEIVE_FLAG_RESOURCES no parâmetro ReceiveFlags , isso indicará que o driver de filtro deve recuperar a propriedade das estruturas NET_BUFFER_LIST imediatamente. Nesse caso, o NDIS não chama a função FilterReturnNetBufferLists do driver de filtro para retornar as estruturas de NET_BUFFER_LIST . Em vez disso, o NDIS retorna as estruturas NET_BUFFER_LIST para o driver de filtro após o retorno de NdisFIndicateReceiveNetBufferLists. O driver de filtro deve recuperar as estruturas de NET_BUFFER_LIST imediatamente após o retorno de NdisFIndicateReceiveNetBufferLists . Para recuperar as estruturas de NET_BUFFER_LIST , um driver de filtro pode chamar sua própria função FilterReturnNetBufferLists .

Definir o sinalizador de NDIS_RECEIVE_FLAG_RESOURCES no parâmetro ReceiveFlags força os drivers de sobreposição a copiar os dados de rede e liberar as estruturas de NET_BUFFER_LIST para o driver de filtro.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Área de Trabalho
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL <= DISPATCH_LEVEL
Regras de conformidade da DDI Irql_Filter_Driver_Function(ndis)

Confira também

FilterAttach

FilterReceiveNetBufferLists

FilterReturnNetBufferLists

NDIS_RECEIVE_QUEUE_PARAMETERS

NET_BUFFER

NET_BUFFER_LIST

NdisMAllocatePort

Recebendo dados em um driver de filtro