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 .

Nota Debe declarar la función mediante el tipo PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE . Para obtener más información, consulte la sección Ejemplos siguientes.
 

Sintaxis

PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE ProtocolCoSendNetBufferListsComplete;

void ProtocolCoSendNetBufferListsComplete(
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG SendCompleteFlags
)
{...}

Parámetros

[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 de la conexión por 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 está DISPATCH_LEVEL. Para obtener más información sobre esta marca, vea Dispatch IRQL Tracking.

Valor devuelto

None

Observaciones

La función ProtocolCoSendNetBufferListsComplete es necesaria para los controladores de protocolo CoNDIS. ProtocolCoSendNetBufferListsComplete realiza el 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 al Función NdisMCoSendNetBufferListsComplete . Una operación de envío completa no implica necesariamente que un controlador de miniport 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 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" (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.

Ejemplos

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 de 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, vea Declarar funciones mediante 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.

Requisitos

   
Cliente mínimo compatible Compatible con NDIS 6.0 y versiones posteriores.
Plataforma de destino Windows
Encabezado ndis.h (incluya Ndis.h)
IRQL <= DISPATCH_LEVEL

Vea también

Funciones de envío y recepción del controlador de protocolo CoNDIS

NET_BUFFER_LIST

NdisCoCreateVc

NdisCoSendNetBufferLists

NdisMCoSendNetBufferListsComplete

ProtocolCoCreateVc

ProtocolCoReceiveNetBufferLists