Função NdisCoSendNetBufferLists (ndis.h)
A função NdisCoSendNetBufferLists 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 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 Dispatch IRQL Tracking.
NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK
O NDIS deve marcar para loopback. Por padrão, o NDIS não faz o loop de dados de volta para o driver que enviou a solicitação de envio. Um driver overlying 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 para a associação. O NDIS indica NET_BUFFER estruturas que correspondem aos critérios ao driver sobressociado. Esse sinalizador não afeta a verificação de loopback ou loopback em outras associações.
Retornar valor
Nenhum
Comentários
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:
O driver de protocolo pode pré-alocar estruturas de NET_BUFFER_LIST , por exemplo, em sua rotina DriverEntry . Como alternativa, o driver de protocolo pode alocar as estruturas imediatamente antes de chamar NdisCoSendNetBufferLists e, em seguida, pode liberá-las quando a operação de envio for concluída. Quando o NDIS retorna uma estrutura NET_BUFFER_LIST para oFunção ProtocolCoSendNetBufferListsComplete, o driver de protocolo pode preparar a estrutura NET_BUFFER_LIST e todos os recursos associados para reutilização. Se você reutilizar as estruturas NET_BUFFER_LIST, poderá obter um desempenho melhor do que retornar as estruturas para um pool e, em seguida, realocá-las para outra operação de envio.Um driver de protocolo deve definir o membro SourceHandle 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 que o NDIS requer para retornar a estrutura NET_BUFFER_LIST para o driver de protocolo depois que o driver de miniporto subjacente chama o Função 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 possui mais as estruturas de NET_BUFFER_LIST e todos os recursos associados. O NDIS chama a função ProtocolCoSendNetBufferListsComplete para retornar as estruturas e os dados ao 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, a status atual de um envio iniciado pelo driver de protocolo não estará 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 chamar NdisCoSendNetBufferLists.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte para drivers NDIS 6.0 no Windows Vista. |
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_Connection_Function(ndis) |