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 do adaptador de miniporto. Os números da porta do adaptador de miniport são atribuídos chamando a função NdisMAllocatePort. Um valor zero identifica a porta padrão de um adaptador de miniporto.
[in] NumberOfNetBufferLists
O número de estruturas de 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 de Acompanhamento de IRQL de Expedição.
NDIS_RECEIVE_FLAGS_RESOURCES
Especifica que o driver de filtro recupera a propriedade das estruturas NET_BUFFER_LIST e quaisquer estruturas de 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 de 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 VM. Um driver de miniporto deve definir esse sinalizador para todas as indicações de recebimento em uma fila se o sinalizador de NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION foi definido no Flags membro 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 compartilhadas válidas. Quando esse sinalizador é definido em um NET_BUFFER_LISTrecebido, o NDIS trata as informações de memória compartilhadas como válidas. Quando esse sinalizador não está definido, o NDIS e os drivers ignoram as informações de memória compartilhadas. 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 se originaram da mesma porta de origem do comutador extensível Hyper-V.
Para obter mais informações, consulte Hyper-V Sinalizadores de Envio e Recebimento Extensíveis do Comutador.
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 de comutador extensível.
Para obter mais informações, consulte Hyper-V Sinalizadores de Envio e Recebimento Extensíveis do Comutador.
Valor de retorno
Nenhum
Observações
Quando um driver de filtro chama a função NdisFIndicateReceiveNetBufferLists, ele especifica uma lista de estruturas de NET_BUFFER_LIST no parâmetro NetBufferLists. O NDIS passa as estruturas de NET_BUFFER_LIST para os drivers em excesso.
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 FilterReceiveNetBufferLists função para filtrar essas indicações de recebimento.
Um driver de filtro deve definir o SourceHandle membro de cada estrutura NET_BUFFER_LIST que se origina com o mesmo valor que o parâmetro NdisFilterHandle. O driver de filtro não deve modificar o membro sourceHandle em nenhuma estrutura de 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 de 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 de NDIS_RECEIVE_FLAG_RESOURCES no parâmetro ReceiveFlags, isso indicará que o driver de filtro deve recuperar a propriedade das estruturas de 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 de 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 NdisFIndicateReceiveNetBufferLists retorna. 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 em excesso a copiar os dados de rede e liberar as estruturas de NET_BUFFER_LIST para o driver de filtro.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Com suporte no NDIS 6.0 e posterior. |
da Plataforma de Destino | Área de trabalho |
cabeçalho | ndis.h (inclua Ndis.h) |
biblioteca | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
regras de conformidade de DDI | Irql_Filter_Driver_Function(ndis) |