Compartir a través de


Función NdisFSendNetBufferLists (ndis.h)

Los controladores de filtro llaman a la función NdisFSendNetBufferLists para enviar una lista de búferes de datos de red.

Sintaxis

void NdisFSendNetBufferLists(
  [in] NDIS_HANDLE                       NdisFilterHandle,
       __drv_aliasesMem PNET_BUFFER_LIST NetBufferList,
  [in] NDIS_PORT_NUMBER                  PortNumber,
  [in] ULONG                             SendFlags
);

Parámetros

[in] NdisFilterHandle

Identificador NDIS que identifica este módulo de filtro. NDIS pasó el identificador al controlador de filtro en una llamada a la función filterAttach .

NetBufferList

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

[in] PortNumber

Número de puerto que identifica un puerto de adaptador de miniporte. Los números de puerto del adaptador de miniport se asignan llamando a la función NdisMAllocatePort. Un valor cero identifica el puerto predeterminado de un adaptador de miniport.

[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 es 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 que sobrepone este comportamiento puede invalidar este comportamiento estableciendo esta marca. Cuando se establece esta marca, NDIS identifica todas las estructuras de 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 para el controlador demasiado excesivo. Esta marca no afecta a la comprobación de bucle invertido o bucle invertido en otros enlaces.

NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE

Si se establece esta marca, todos los paquetes de una lista vinculada de NET_BUFFER_LIST estructuras originadas en el mismo puerto de origen de conmutador extensible Hyper-V.

Para obtener más información, vea Hyper-V extensible Switch Send and Receive Flags.

Nota Si cada paquete de la lista vinculada de NET_BUFFER_LIST estructuras usa el mismo puerto de origen, la extensión debe establecer la marca NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE en el parámetro SendCompleteFlags de NdisFSendNetBufferListsComplete cuando completa la solicitud de envío.
 
Nota Esta marca está disponible en NDIS 6.30 y versiones posteriores.
 

NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP

Si se establece esta marca, todos los paquetes de una lista vinculada de NET_BUFFER_LIST estructuras se reenviarán al mismo puerto de destino extensible del conmutador.

Para obtener más información, vea Hyper-V extensible Switch Send and Receive Flags.

Nota Esta marca está disponible en NDIS 6.30 y versiones posteriores.
 

Valor devuelto

Ninguno

Observaciones

Después de que un controlador de filtro llame a la función NdisFSendNetBufferLists, NDIS envía las estructuras de NET_BUFFER_LIST a los controladores subyacentes.

Un controlador de filtro puede originar solicitudes de envío o puede filtrar las solicitudes que recibe de controladores excesivos. Si el controlador de filtro origina solicitudes de envío, el controlador debe asignar grupos de búferes. El controlador de filtro asigna cada estructura NET_BUFFER_LIST de un grupo.

El controlador de filtro puede asignar previamente NET_BUFFER_LIST estructuras o puede asignar las estructuras justo antes de llamar a NdisFSendNetBufferLists y liberarlas cuando se complete la operación de envío.

Un controlador de filtro debe establecer el miembro SourceHandle de cada estructura de NET_BUFFER_LIST que se origina en el mismo valor que pasa al parámetro NdisFilterHandle. El identificador de filtro proporciona la información que NDIS requiere para devolver la estructura NET_BUFFER_LIST al controlador de filtro. El controlador de filtro no debe modificar el miembro SourceHandle en ninguna estructura de NET_BUFFER_LIST que no se originó.

Antes de llamar a NdisFSendNetBufferLists, un controlador de filtro puede establecer información que acompaña a la solicitud de envío con la macro NET_BUFFER_LIST_INFO. Los controladores subyacentes pueden recuperar esta información con la macro NET_BUFFER_LIST_INFO.

NDIS llama a un controlador de filtro función FilterSendNetBufferLists para pasar solicitudes de envío de controladores excesivos. Un controlador de filtro puede pasar estas solicitudes pasando las estructuras de NET_BUFFER_LISTT que recibió en FilterSendNetBufferLists a NdisFSendNetBufferLists.

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

Hasta que NDIS llama a FilterSendNetBufferListsComplete, el estado actual de la solicitud de envío no está disponible para el controlador de filtro. Un controlador de filtro libera temporalmente la propiedad de todos los recursos asociados a una solicitud de envío cuando llama a NdisFSendNetBufferLists. Un controlador de filtro nunca debe intentar examinar las estructuras de NET_BUFFER_LIST ni los datos asociados después de llamar a NdisFSendNetBufferLists.

Nota Un controlador de filtro debe realizar un seguimiento de las solicitudes de envío que origina y asegurarse de que no llama a . función NdisFSendNetBufferListsComplete cuando se completan dichas solicitudes.
 

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 6.0 y versiones posteriores.
de la plataforma de destino de Escritorio
encabezado de ndis.h (incluya Ndis.h)
biblioteca de Ndis.lib
irQL <= DISPATCH_LEVEL
reglas de cumplimiento de DDI Irql_Filter_Driver_Function(ndis)

Consulte también

FilterAttach

filterSendNetBufferLists de

FilterSendNetBufferListsComplete

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisMAllocatePort