PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE función de devolución de llamada (ndis.h)
La función ProtocolCoSendNetBufferListsComplete completa una operación de envío que el controlador de protocolo inició con una llamada a . Función NdisCoSendNetBufferLists .
PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE ProtocolCoSendNetBufferListsComplete;
void ProtocolCoSendNetBufferListsComplete(
[in] NDIS_HANDLE ProtocolVcContext,
[in] PNET_BUFFER_LIST NetBufferLists,
[in] ULONG SendCompleteFlags
)
{...}
[in] ProtocolVcContext
Identificador de un área de contexto asignada por controlador de protocolo en la que este controlador mantiene la información de estado en tiempo de ejecución por conexión virtual (VC). Un cliente o administrador de llamadas independiente proporcionó este identificador cuando llamó a la función NdisCoCreateVc o desde su función ProtocolCoCreateVc .
[in] NetBufferLists
Puntero a una lista de estructuras de NET_BUFFER_LIST que el controlador de protocolo proporcionó en una llamada anterior a . Función NdisCoSendNetBufferLists .
[in] SendCompleteFlags
Marcas NDIS que se pueden combinar con una operación OR bit a bit. Para borrar todas las marcas, establezca este parámetro en cero. ProtocolCoSendNetBufferListsComplete admite la marca NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL, que; si se establece, indica que el IRQL actual es DISPATCH_LEVEL. Para obtener más información sobre esta marca, vea Dispatch IRQL Tracking.
None
La función ProtocolCoSendNetBufferListsComplete es necesaria para los controladores de protocolo CoNDIS. ProtocolCoSendNetBufferListsComplete realiza cualquier postprocesamiento necesario para completar una operación de envío. Por ejemplo, el controlador de protocolo puede notificar a los clientes que solicitaron al controlador que enviara los datos de red que la operación de envío está completa.
NDIS llama a ProtocolCoSendNetBufferListsComplete después de que el controlador de miniporte subyacente llame a . Función NdisMCoSendNetBufferListsComplete . Una operación de envío completa no implica necesariamente que un controlador de miniporte subyacente haya transmitido los datos de red especificados. Por ejemplo, un controlador de minipuerto puede indicar que una operación de envío se ha completado en cuanto transfiere los datos de red al hardware de la tarjeta de interfaz de red (NIC).
Cuando NDIS llama a ProtocolCoSendNetBufferListsComplete, el controlador de protocolo recupera la propiedad de todos los recursos asociados a las estructuras de NET_BUFFER_LIST que especifica el parámetro NetBufferLists .
NDIS siempre envía los datos de red proporcionados por el controlador de protocolo a los controladores subyacentes en el orden determinado por el protocolo que se pasó a NdisCoSendNetBufferLists. Sin embargo, el controlador subyacente puede completar las solicitudes de envío en cualquier orden. Es decir, los controladores de protocolo pueden confiar en NDIS para enviar datos de red en el orden "primero en salir, primero en salir" (FIFO) al controlador subyacente. Sin embargo, los controladores de protocolo no pueden confiar en el controlador subyacente para llamar a NdisMCoSendNetBufferListsComplete en el mismo orden.
NDIS llama a ProtocolCoSendNetBufferListsComplete en IRQL<= DISPATCH_LEVEL.
Para definir una función ProtocolCoSendNetBufferListsComplete , primero debe proporcionar una declaración de función que identifique el tipo de función que está definiendo. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función ProtocolCoSendNetBufferListsComplete denominada "MyCoSendNetBufferListsComplete", use el tipo PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE como se muestra en este ejemplo de código:
PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE MyCoSendNetBufferListsComplete;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MyCoSendNetBufferListsComplete(
NDIS_HANDLE ProtocolVcContext,
PNET_BUFFER_LIST NetBufferLists,
ULONG SendCompleteFlags
)
{...}
El tipo de función PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE se define en el archivo de encabezado Ndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte Declaración de funciones mediante el uso de tipos de roles de función para controladores NDIS.
Para obtener información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.
Requisito | Value |
---|---|
Cliente mínimo compatible | Se admite en NDIS 6.0 y versiones posteriores. |
Plataforma de destino | Windows |
Encabezado | ndis.h (incluya Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
Funciones de envío y recepción del controlador del protocolo CoNDIS
NdisMCoSendNetBufferListsComplete