Compartir a través de


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

NDIS llama a la función FilterSendNetBufferListsComplete para completar una solicitud de envío que inició un controlador de filtro llamando a . Función NdisFSendNetBufferLists .

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

Sintaxis

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE FilterSendNetBufferListsComplete;

void FilterSendNetBufferListsComplete(
  [in] NDIS_HANDLE FilterModuleContext,
       PNET_BUFFER_LIST NetBufferList,
  [in] ULONG SendCompleteFlags
)
{...}

Parámetros

[in] FilterModuleContext

Identificador del área de contexto del módulo de filtro. El controlador de filtro creó e inicializó este área de contexto en la función FilterAttach .

NetBufferList

Puntero a una lista vinculada de NET_BUFFER_LIST estructuras a las que pasó el controlador de filtro. NdisFSendNetBufferLists.

[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 las marcas siguientes:

NDIS_SEND_COMPLETE_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_COMPLETE_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.

Nota Si cada paquete de la lista vinculada de NET_BUFFER_LIST estructuras usa el mismo puerto de origen, la extensión debe establecer la marca NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE en el parámetro SendFlags de SendNetBufferLists cuando envía la solicitud.
 
Nota Esta marca está disponible en NDIS 6.30 y versiones posteriores.
 

Valor devuelto

None

Observaciones

FilterSendNetBufferListsComplete es una función opcional. Si un controlador de filtro no filtra las solicitudes de envío, puede establecer el punto de entrada de esta función en NULL cuando llama a . Función NdisFRegisterFilterDriver .

El controlador de filtro puede llamar a la función NdisSetOptionalHandlers , desde la función FilterSetModuleOptions , para especificar una función FilterSendNetBufferListsComplete para un módulo de filtro.

Nota Un controlador de filtro que no proporciona una función FilterSendNetBufferListsComplete no puede llamar a la función NdisFSendNetBufferLists .
 
Cuando NDIS llama a FilterSendNetBufferListsComplete, el controlador de filtro recupera la propiedad de las estructuras de NET_BUFFER_LIST y los datos asociados.

Si un controlador que ha iniciado la solicitud de envío excesivamente, el controlador de filtro debe llamar a la función NdisFSendNetBufferListsComplete para completar la solicitud de envío.

Si el controlador de filtro originó la solicitud de envío, FilterSendNetBufferListsComplete puede liberar las estructuras de NET_BUFFER_LIST y los datos asociados o prepararlos para su reutilización en una llamada posterior a NdisFSendNetBufferLists.

Nota Un controlador de filtro debe realizar un seguimiento de las solicitudes de envío que inicia y asegurarse de que no llama a NdisFSendNetBufferListsComplete cuando NDIS llama a FilterSendNetBufferListsComplete para estas solicitudes.
 
NDIS llama a FilterSendNetBufferListsComplete en IRQL <= DISPATCH_LEVEL.

Ejemplos

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

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE MySendNetBufferListsComplete;

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

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

El tipo de función FILTER_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 FILTER_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.

Requisitos

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

Consulte también

FilterAttach

FilterSetModuleOptions

NET_BUFFER

NET_BUFFER_LIST

NdisFRegisterFilterDriver

NdisFSendNetBufferLists

NdisFSendNetBufferListsComplete

NdisSetOptionalHandlers