Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A figura a seguir ilustra uma operação de receção básica, envolvendo um driver de protocolo, o NDIS e drivers subjacentes numa pilha de drivers.
O NDIS chama a função ProtocolReceiveNetBufferLists de um driver de protocolo para processar indicações de recebimento que vêm de drivers subjacentes. O NDIS chama ProtocolReceiveNetBufferLists depois que um driver subjacente chama uma função de indicação de recebimento (por exemplo, NdisMIndicateReceiveNetBufferLists) para indicar dados de rede recebidos ou dados de loopback.
Se o sinalizador de NDIS_RECEIVE_FLAGS_RESOURCES no parâmetro ReceiveFlags da função ProtocolReceiveNetBufferLists não estiver definido, o driver de protocolo manterá a responsabilidade pelas estruturas NET_BUFFER_LIST até chamar a função NdisReturnNetBufferLists. Se o NDIS configurar o sinalizador NDIS_RECEIVE_FLAGS_RESOURCES, o driver de protocolo não poderá reter a estrutura NET_BUFFER_LIST e os recursos associados. O sinalizador set NDIS_RECEIVE_FLAGS_RESOURCES indica que um driver subjacente está com poucos recursos de recebimento. Nesse caso, a função ProtocolReceiveNetBufferLists deve copiar os dados recebidos para o armazenamento alocado pelo protocolo e retornar o mais rápido possível.
Observação O NDIS pode alterar os sinalizadores que um driver subjacente indica. Por exemplo, se um driver de miniport definir o sinalizador NDIS_RECEIVE_FLAGS_RESOURCES no parâmetro ReceiveFlags da função NdisMIndicateReceiveNetBufferLists, o NDIS poderá copiar os dados indicados e passar a cópia para ProtocolReceiveNetBufferLists com o sinalizador NDIS_RECEIVE_FLAGS_RESOURCES desativado.
Observação Se o sinalizador NDIS_RECEIVE_FLAGS_RESOURCES estiver ativo, o driver de protocolo deve reter o conjunto original de estruturas NET_BUFFER_LIST na lista encadeada. Por exemplo, quando esse sinalizador é definido, o driver pode processar as estruturas e indicá-las na pilha, uma de cada vez, mas antes que a função retorne, ela deve restaurar a lista vinculada original.
Os drivers de protocolo chamam a função NdisReturnNetBufferLists para liberar a propriedade de uma lista de estruturas NET_BUFFER_LIST , juntamente com as estruturas NET_BUFFER associadas e os dados de rede.