Compartir a través de


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

La plataforma PacketDirect (PD) llama a la función PDQueryQueueDepth del controlador de miniporte compatible con PD para devolver el número de estructuras de PD_BUFFER sin procesar que se publican en la cola.

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

 

Sintaxis

NDIS_PD_QUERY_QUEUE_DEPTH NdisPdQueryQueueDepth;

VOID() NdisPdQueryQueueDepth(
  [in]  const NDIS_PD_QUEUE *Queue,
  [out] ULONG64 *Depth
)
{...}

Parámetros

[in] Queue

Puntero a una cola de transmisión o recepción.

[out] Depth

En una cola de recepción, este es el número de estructuras de PD_BUFFER disponibles para colocar paquetes entrantes en. Por ejemplo, si se publicaron 10 búferes y el proveedor ya ha capturado 3 de los 10 para colocar paquetes entrantes en, este valor debe ser 7. En una cola de transmisión, este es el número de estructuras de PD_BUFFER que el proveedor aún no ha capturado de la cola para transmitir.

Valor devuelto

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

Comentarios

Nota Para los asociados de IHV: la capacidad de supervisar la profundidad de la cola es muy importante para que los clientes accedan a la acumulación de congestión y tomen medidas de precaución. Una profundidad de cola creciente para una cola de transmisión es un signo de aumento de la congestión en el vínculo saliente. Una profundidad de cola decreciente para una cola RX es un signo de que el cliente no puede procesar los paquetes entrantes lo suficientemente rápido en el vínculo entrante. Es posible que los clientes necesiten supervisar el estado de profundidad de la cola con frecuencia (por ejemplo, obtener la profundidad de la cola para cada publicación y operación, por lo que el costo (en ciclos de CPU) de consultar la profundidad de la cola no debe ser notable en comparación con el costo de una sola llamada PDPostAndDrainBufferList .
 

Ejemplos

Para definir una función PDQueryQueueDepth , primero debe proporcionar una declaración de función que identifique el tipo de función que va a definir. 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 PDQueryQueueDepth denominada "MyPDQueryQueueDepth", use el tipo NDIS_PD_QUERY_QUEUE_DEPTH como se muestra en este ejemplo de código:

NDIS_PD_QUERY_QUEUE_DEPTH MyPDQueryQueueDepth;

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

_Use_decl_annotations_
VOID
 MyPDQueryQueueDepth(
    CONST NDIS_PD_QUEUE*  Queue,
    ULONG64*  Depth
    )
  {...}

El tipo de función NDIS_PD_QUERY_QUEUE_DEPTH 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_QUERY_QUEUE_DEPTH 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 Windows 10
Servidor mínimo compatible Windows Server 2016
Plataforma de destino Windows
Encabezado ndis.h
IRQL <= DISPATCH_LEVEL