Função NdisSendNetBufferLists (ndis.h)
Os drivers de protocolo chamam a função NdisSendNetBufferLists para enviar dados de rede contidos em uma lista de estruturas de NET_BUFFER_LIST.
Sintaxe
void NdisSendNetBufferLists(
[in] NDIS_HANDLE NdisBindingHandle,
[in] __drv_aliasesMem PNET_BUFFER_LIST NetBufferLists,
[in] NDIS_PORT_NUMBER PortNumber,
[in] ULONG SendFlags
);
Parâmetros
[in] NdisBindingHandle
Um identificador que identifica o adaptador de destino. Uma chamada anterior para NdisOpenAdapterEx retornou esse identificador.
[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] PortNumber
Um número de porta que identifica uma porta do adaptador de miniporto. O número de porta padrão de um adaptador de miniporto é zero. Os drivers de protocolo que não usam portas de adaptador de miniporto devem especificar a porta padrão.
[in] SendFlags
Sinalizadores que definem atributos para a operação de envio. 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_SEND_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_SEND_FLAGS_CHECK_FOR_LOOPBACK
Especifica que o NDIS deve verificar o 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 sobressalo pode substituir esse comportamento definindo esse sinalizador. 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 tem efeito na verificação de loopback ou loop back em outras associações.
Valor de retorno
Nenhum
Observações
Depois que um driver de protocolo chama NdisSendNetBufferLists, o NDIS envia as estruturas de NET_BUFFER_LIST para um driver subjacente função MiniportSendNetBufferLists.
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 membro sourceHandle de cada estrutura NET_BUFFER_LIST com o mesmo valor que ele passa para o parâmetro NdisBindingHandle. O identificador de associação fornece as informações necessárias para que o NDIS retorne a estrutura de NET_BUFFER_LIST ao driver de protocolo após as chamadas do driver de miniporto subjacente NdisMSendNetBufferListsComplete.
Antes de chamar NdisSendNetBufferLists, um driver de protocolo 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 NdisSendNetBufferLists 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 pela transmissão.
Assim que um driver de protocolo chama NdisSendNetBufferLists, ele abre mão da propriedade das estruturas NET_BUFFER_LIST e de todos os recursos associados. O NDIS chama a função ProtocolSendNetBufferListsComplete 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 ProtocolSendNetBufferListsComplete.
Até que o NDIS chame ProtocolSendNetBufferListsComplete, 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 NdisSendNetBufferLists. Um driver de protocolo nunca deve tentativa de examinar as estruturas de NET_BUFFER_LIST ou quaisquer dados associados depois de chamar NdisSendNetBufferLists.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Com suporte no NDIS 6.0 e posterior. |
da Plataforma de Destino | Universal |
cabeçalho | ndis.h (inclua Ndis.h) |
biblioteca | Ndis.lib |
IRQL | <=DISPATCH_LEVEL |
regras de conformidade de DDI | Irql_SendRcv_Function(ndis) |