Función NdisSendNetBufferLists (ndis.h)

Los controladores de protocolo llaman a la función NdisSendNetBufferLists para enviar datos de red contenidos en una lista de estructuras de NET_BUFFER_LIST .

Sintaxis

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

Identificador que identifica el adaptador de destino. Una llamada anterior a NdisOpenAdapterEx devolvió este identificador.

[in] NetBufferLists

Puntero a una lista vinculada de estructuras de NET_BUFFER_LIST . Cada estructura de NET_BUFFER_LIST describe una lista de estructuras de NET_BUFFER .

[in] PortNumber

Número de puerto que identifica un puerto de adaptador de minipuerto. El número de puerto predeterminado de un adaptador de minipuerto es cero. Los controladores de protocolo que no usan puertos de adaptador de minipuerto deben especificar el puerto predeterminado.

[in] SendFlags

Marcas que definen atributos para la operación de envío. Las marcas se pueden combinar con una operación OR. Para borrar todas las marcas, establezca este miembro en cero. Esta función admite las marcas siguientes:

NDIS_SEND_FLAGS_DISPATCH_LEVEL

Especifica que el IRQL actual está DISPATCH_LEVEL. Para obtener más información sobre esta marca, vea Dispatch IRQL Tracking.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

Especifica que NDIS debe comprobar si hay bucle invertido. De forma predeterminada, NDIS no devuelve datos al controlador que envió la solicitud de envío. Un controlador de sobreaprovisionamiento puede invalidar este comportamiento estableciendo esta marca. Cuando se establece esta marca, NDIS identifica todas las estructuras NET_BUFFER que contienen datos que coinciden con los criterios de recepción del enlace. NDIS indica NET_BUFFER estructuras que coinciden con los criterios del controlador de sobreaprovisionamiento. Esta marca no tiene ningún efecto en la comprobación de bucle invertido o bucle invertido, en otros enlaces.

Valor devuelto

None

Observaciones

Después de que un controlador de protocolo llame a NdisSendNetBufferLists, NDIS envía las estructuras de NET_BUFFER_LIST a los controladores subyacentes. Función MiniportSendNetBufferLists .

El controlador de protocolo debe asignar cada estructura de NET_BUFFER_LIST de un grupo llamando a una de las siguientes funciones:

El controlador de protocolo puede asignar previamente NET_BUFFER_LIST estructuras, por ejemplo, en su rutina DriverEntry . Como alternativa, el controlador puede asignar las estructuras justo antes de llamar a NdisSendNetBufferLists y liberarlas cuando se complete la operación de envío. Cuando NDIS devuelve una estructura de NET_BUFFER_LIST a ProtocolSendNetBufferListsComplete, el controlador de minipuerto puede preparar la estructura de NET_BUFFER_LIST y los recursos asociados para su reutilización. La reutilización de las estructuras de NET_BUFFER_LIST puede producir un mejor rendimiento que devolver las estructuras a un grupo y, a continuación, reasignarlas para otra operación de envío.

Un controlador de protocolo debe establecer el miembro SourceHandle de cada estructura de NET_BUFFER_LIST en el mismo valor que pasa al parámetro NdisBindingHandle . El identificador de enlace proporciona la información que NDIS requiere para devolver la estructura de NET_BUFFER_LIST al controlador de protocolo después de que el controlador de miniporte subyacente llame al controlador de minipuerto subyacente. NdisMSendNetBufferListsComplete.

Antes de llamar a NdisSendNetBufferLists, un controlador de protocolo puede establecer información que acompaña a la solicitud de envío con la macro NET_BUFFER_LIST_INFO . El controlador subyacente puede recuperar esta información con la macro NET_BUFFER_LIST_INFO.

Antes de que un controlador de protocolo llame a NdisSendNetBufferLists con una lista de estructuras de NET_BUFFER_LIST, el controlador de protocolo debe asegurarse de que las estructuras de NET_BUFFER_LIST están configuradas en el orden en que se deben enviar los datos de red a través de la conexión.

En cuanto un controlador de protocolo llama a NdisSendNetBufferLists, renuncia a la propiedad de las estructuras de NET_BUFFER_LIST y a todos los recursos asociados. NDIS llama a la función ProtocolSendNetBufferListsComplete para devolver las estructuras y los datos al controlador de protocolo. NDIS puede recopilar las estructuras y los datos de varias solicitudes de envío en una única lista vinculada de estructuras de NET_BUFFER_LIST antes de pasar la lista a ProtocolSendNetBufferListsComplete.

Hasta que NDIS llame a ProtocolSendNetBufferListsComplete, el estado actual de un envío iniciado por el controlador de protocolo no está disponible para el controlador de protocolo. Un controlador de protocolo libera temporalmente la propiedad de todos los recursos que asignó para una solicitud de envío cuando llama a NdisSendNetBufferLists. Un controlador de protocolo nunca debe intentar examinar las estructuras de NET_BUFFER_LIST o los datos asociados después de llamar a NdisSendNetBufferLists.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite en NDIS 6.0 y versiones posteriores.
Plataforma de destino Universal
Encabezado ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL <=DISPATCH_LEVEL
Reglas de cumplimiento de DDI Irql_SendRcv_Function(ndis)

Consulte también

DriverEntry

MiniportSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAllocateCloneNetBufferList NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisMAllocatePort

NdisMSendNetBufferListsComplete

NdisOpenAdapterEx

ProtocolSendNetBufferListsComplete