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 de NET_BUFFER .

[in] PortNumber

Número de puerto que identifica un puerto de adaptador de minipuerto. Los números de puerto del adaptador de minipuerto se asignan mediante una llamada a la función NdisMAllocatePort . Un valor cero identifica el puerto predeterminado de un adaptador de minipuerto.

[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 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 del controlador de sobreaprovisionamiento. 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 de Hyper-V.

Para obtener más información, vea Marcadores de envío y recepción de conmutador extensible de Hyper-V.

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 estructuras de NET_BUFFER_LIST se reenviarán al mismo puerto de destino de conmutador extensible.

Para obtener más información, vea Marcadores de envío y recepción de conmutador extensible de Hyper-V.

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

Valor devuelto

None

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 de 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 al controlador de filtro Función FilterSendNetBufferLists para pasar solicitudes de envío de controladores demasiado excesivos. Un controlador de filtro puede pasar estas solicitudes pasando las estructuras T de NET_BUFFER_LISTque 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 única lista vinculada de estructuras de NET_BUFFER_LIST antes de pasar la lista a FilterSendNetBufferListsComplete.

Hasta que NDIS llame 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 o 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 Value
Cliente mínimo compatible Se admite en NDIS 6.0 y versiones posteriores.
Plataforma de destino Escritorio
Encabezado ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI Irql_Filter_Driver_Function(ndis)

Consulte también

FilterAttach

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisMAllocatePort