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

La plataforma PacketDirect (PD) llama a la función PDFlushQueue del controlador de miniporte compatible con PD para vaciar una cola especificada, lo que garantiza que los elementos que aún no están en un estado completo de la cola se completarán inminentemente.

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

 

Sintaxis

NDIS_PD_FLUSH_QUEUE NdisPdFlushQueue;

VOID() NdisPdFlushQueue(
  [in, out] NDIS_PD_QUEUE *Queue
)
{...}

Parámetros

[in, out] Queue

Cola que se va a vaciar. Para obtener más información, consulte la estructura NDIS_PD_QUEUE .

Valor devuelto

Esta función de devolución de llamada no devuelve un valor.

Comentarios

El autor de la llamada es responsable de esperar y purgar todas las solicitudes publicadas anteriormente antes de cerrar la cola. El autor de la llamada no debe publicar ninguna estructura PD_BUFFER más en la cola después de esta llamada. El caso de uso principal de esta rutina es vaciar las colas de recepción; si no hay tráfico entrante, los búferes publicados se colocarán en la cola de recepción indefinidamente y estos deben purgarse al vaciarse antes de que se pueda cerrar la cola. El mismo problema no existe para las colas de transmisión en la práctica porque las solicitudes de transmisión no se almacenarán indefinidamente. Sin embargo, los proveedores deben respetar la llamada de vaciado para las colas de transmisión (esto puede ser una operación no operativa si el proveedor sabe que la solicitud de transmisión pendiente se completará muy pronto, que es el caso típico excepto para el control de flujo L2).

Ejemplos

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

NDIS_PD_FLUSH_QUEUE MyPDFlushQueue;

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

_Use_decl_annotations_
VOID
 MyPDFlushQueue(
    NDIS_PD_QUEUE*  NdisPDQueue
    )
  {...}

El tipo de función NDIS_PD_FLUSH_QUEUE se define en el archivo de encabezado Ntddndis.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 NDIS_PD_FLUSH_QUEUE 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 Windows 10
Servidor mínimo compatible Windows Server 2016
Plataforma de destino Windows
Encabezado ndis.h
IRQL <= DISPATCH_LEVEL