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.
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) |