Compartir a través de


PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE función de devolución de llamada (ndis.h)

La función ProtocolSendNetBufferListsComplete completa una operación de envío que el controlador de protocolo inició con una llamada a . Función NdisSendNetBufferLists .

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

Sintaxis

PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE ProtocolSendNetBufferListsComplete;

void ProtocolSendNetBufferListsComplete(
  [in] NDIS_HANDLE ProtocolBindingContext,
  [in] PNET_BUFFER_LIST NetBufferList,
  [in] ULONG SendCompleteFlags
)
{...}

Parámetros

[in] ProtocolBindingContext

Identificador de un área de contexto que el controlador de protocolo asignó para mantener información de estado sobre un enlace. Este identificador se pasó a NDIS en una llamada anterior a NdisOpenAdapterEx.

[in] NetBufferList

Puntero a una lista de estructuras de NET_BUFFER_LIST que el controlador de protocolo proporcionó en una llamada anterior a NdisSendNetBufferLists.

[in] SendCompleteFlags

Marcas NDIS que se pueden combinar con una operación OR. Para borrar todas las marcas, establezca este miembro en cero. Esta función 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

ProtocolSendNetBufferListsComplete es una función necesaria para los controladores de protocolo. ProtocolSendNetBufferListsComplete 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 el protocolo para enviar los datos de red que la operación de envío está completa.

NDIS llama a ProtocolSendNetBufferListsComplete después de que el controlador de miniporte subyacente llame al Función NdisMSendNetBufferListsComplete . La finalización de una operación de envío normalmente implica que el controlador de miniporte subyacente ha transmitido los datos de red especificados. Sin embargo, un controlador de minipuerto puede indicar que una operación de envío se ha completado en cuanto transfiere los datos de red a su NIC.

Cuando NDIS llama a ProtocolSendNetBufferListsComplete, el controlador de protocolo recupera la propiedad de todos los recursos asociados a las estructuras de NET_BUFFER_LIST especificadas por el parámetro NetBufferLists .

NDIS siempre envía los datos de red proporcionados por el protocolo al controlador de minipuerto subyacente en el orden determinado por el protocolo tal como se pasa a NdisSendNetBufferLists. 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 FIFO para el controlador subyacente. Sin embargo, los controladores de protocolo no pueden confiar en el controlador subyacente para llamar a NdisMSendNetBufferListsComplete en el mismo orden.

NDIS llama a ProtocolSendNetBufferListsComplete en IRQL<= DISPATCH_LEVEL.

Ejemplos

Para definir una función ProtocolSendNetBufferListsComplete , 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 ProtocolSendNetBufferListsComplete denominada "MySendNetBufferListsComplete", use el tipo PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE como se muestra en este ejemplo de código:

PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE MySendNetBufferListsComplete;

A continuación, implemente la función de la siguiente manera:

_Use_decl_annotations_
VOID
 MySendNetBufferListsComplete(
    NDIS_HANDLE  ProtocolBindingContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendCompleteFlags
    )
  {...}

El tipo de función PROTOCOL_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_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

Requisito Value
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

Consulte también

NET_BUFFER

NET_BUFFER_LIST

NdisMSendNetBufferListsComplete

NdisOpenAdapterEx

NdisSendNetBufferLists