Função NdisCoSendNetBufferLists (ndis.h)
A função NdisCoSendNetBufferLists de envia dados de rede contidos em uma lista especificada de estruturas de NET_BUFFER_LIST.
Sintaxe
void NdisCoSendNetBufferLists(
[in] NDIS_HANDLE NdisVcHandle,
[in] PNET_BUFFER_LIST NetBufferLists,
[in] ULONG SendFlags
);
Parâmetros
[in] NdisVcHandle
Um identificador para uma VC (conexão virtual) que identifica o destino da solicitação de envio.
[in] NetBufferLists
Um ponteiro para uma lista vinculada de estruturas de NET_BUFFER_LIST. Cada estrutura NET_BUFFER_LIST descreve uma lista de estruturas de NET_BUFFER.
[in] SendFlags
Sinalizadores que definem atributos para a operação de envio. Os sinalizadores podem ser combinados com uma operação OR bit a bit. Para limpar todos os sinalizadores, defina esse parâmetro como zero. NdisCoSendNetBufferLists dá suporte aos seguintes sinalizadores:
NDIS_SEND_FLAGS_DISPATCH_LEVEL
O IRQL atual é DISPATCH_LEVEL. Para obter mais informações sobre esse sinalizador, consulte de Acompanhamento de IRQL de Expedição.
NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK
O NDIS deve verificar se há loopback. Por padrão, o NDIS não faz loop de dados de volta para o driver que enviou a solicitação de envio. Um driver sobressoante pode substituir esse comportamento definindo NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK. Quando esse sinalizador é definido, o NDIS identifica todas as estruturas de NET_BUFFER que contêm dados que correspondem aos critérios de recebimento da associação. O NDIS indica NET_BUFFER estruturas que correspondem aos critérios com o driver em excesso. Esse sinalizador não afeta a verificação de loopback ou loopback em outras associações.
Valor de retorno
Nenhum
Observações
Depois que um driver de protocolo CoNDIS chama NdisCoSendNetBufferLists, o NDIS envia as estruturas de NET_BUFFER_LIST que o parâmetro NetBufferLists especifica a um driver subjacente função MiniportCoSendNetBufferLists.
O driver de protocolo deve alocar cada estrutura NET_BUFFER_LIST de um pool chamando uma das seguintes funções:
- NdisAllocateNetBufferAndNetBufferList
- NdisAllocateCloneNetBufferList
Um driver de protocolo deve definir o SourceHandle membro de cada estrutura NET_BUFFER_LIST com o mesmo valor que ele passa no parâmetro NdisVcHandle. O identificador de origem fornece as informações necessárias para que o NDIS retorne a estrutura de NET_BUFFER_LIST para o driver de protocolo depois que o driver de miniporto subjacente chama o função de NdisMCoSendNetBufferListsComplete.
Antes que um driver de protocolo chame NdisCoSendNetBufferLists, o driver pode definir informações que acompanham a solicitação de envio com a macro NET_BUFFER_LIST_INFO. O driver subjacente pode recuperar essas informações com a macro NET_BUFFER_LIST_INFO.
Antes que um driver de protocolo chame NdisCoSendNetBufferLists com uma lista de estruturas de NET_BUFFER_LIST, o driver de protocolo deve garantir que as estruturas de NET_BUFFER_LIST sejam configuradas na ordem em que os dados de rede devem ser enviados.
Assim que um driver de protocolo chama NdisCoSendNetBufferLists, ele não é mais proprietário das estruturas de NET_BUFFER_LIST e todos os recursos associados. O NDIS chama a função ProtocolCoSendNetBufferListsComplete para retornar as estruturas e os dados para o driver de protocolo. O NDIS pode coletar as estruturas e os dados de várias solicitações de envio em uma única lista vinculada de estruturas de NET_BUFFER_LIST antes de passar a lista para ProtocolCoSendNetBufferListsComplete.
Até que o NDIS chame ProtocolCoSendNetBufferListsComplete, o status atual de um envio iniciado pelo driver de protocolo não está disponível para o driver de protocolo. Um driver de protocolo libera temporariamente a propriedade de todos os recursos alocados para uma solicitação de envio quando chama NdisCoSendNetBufferLists. Um driver de protocolo nunca deve tentar examinar as estruturas de NET_BUFFER_LIST ou quaisquer dados associados depois que o driver chama NdisCoSendNetBufferLists.