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.
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.
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.
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) |