Función NdisCoSendNetBufferLists (ndis.h)
La función NdisCoSendNetBufferLists envía datos de red contenidos en una lista especificada de estructuras de NET_BUFFER_LIST .
Sintaxis
void NdisCoSendNetBufferLists(
[in] NDIS_HANDLE NdisVcHandle,
[in] PNET_BUFFER_LIST NetBufferLists,
[in] ULONG SendFlags
);
Parámetros
[in] NdisVcHandle
Identificador de una conexión virtual (VC) que identifica el destino de la solicitud de envío.
[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] SendFlags
Marcas que definen atributos para la operación de envío. Las marcas se pueden combinar con una operación OR bit a bit. Para borrar todas las marcas, establezca este parámetro en cero. NdisCoSendNetBufferLists admite las siguientes marcas:
NDIS_SEND_FLAGS_DISPATCH_LEVEL
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
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 exceso puede invalidar este comportamiento estableciendo NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK. 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 de sobreaprovisionamiento. Esta marca no afecta a la comprobación de bucle invertido o bucle invertido en otros enlaces.
Valor devuelto
None
Observaciones
Después de que un controlador de protocolo CoNDIS llame a NdisCoSendNetBufferLists, NDIS envía las estructuras de NET_BUFFER_LIST que el parámetro NetBufferLists especifica en el controlador subyacente. Función MiniportCoSendNetBufferLists .
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 de protocolo puede asignar las estructuras inmediatamente antes de llamar a NdisCoSendNetBufferLists y, a continuación, puede liberarlas cuando se complete la operación de envío. Cuando NDIS devuelve una estructura de NET_BUFFER_LIST a la Función ProtocolCoSendNetBufferListsComplete , el controlador de protocolo puede preparar la estructura de NET_BUFFER_LIST y los recursos asociados para su reutilización. Si reutiliza las estructuras de NET_BUFFER_LIST, puede obtener 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 en el parámetro NdisVcHandle . El identificador de origen 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 Función NdisMCoSendNetBufferListsComplete .
Antes de que un controlador de protocolo llame a NdisCoSendNetBufferLists, el controlador 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 NdisCoSendNetBufferLists 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.
En cuanto un controlador de protocolo llama a NdisCoSendNetBufferLists, ya no posee las estructuras de NET_BUFFER_LIST y todos los recursos asociados. NDIS llama a la función ProtocolCoSendNetBufferListsComplete 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 ProtocolCoSendNetBufferListsComplete.
Hasta que NDIS llama a ProtocolCoSendNetBufferListsComplete, 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 NdisCoSendNetBufferLists. Un controlador de protocolo nunca debe intentar examinar las estructuras de NET_BUFFER_LIST o los datos asociados después de que el controlador llame a NdisCoSendNetBufferLists.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con controladores NDIS 6.0 en Windows Vista. |
Plataforma de destino | Escritorio |
Encabezado | ndis.h (incluya Ndis.h) |
Library | Ndis.lib |
IRQL | <=DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | Irql_Connection_Function(ndis) |