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 PDQueryQueueDep th del controlador de miniporte compatible con PD para devolver el número de estructuras de PD_BUFFER no procesadas que se publican en el Queue.

Nota Debe declarar la función mediante el tipo de 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. Por ejemplo, si se publicaron 10 búferes y el proveedor ya ha capturado 3 de los 10 para colocar paquetes entrantes, 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.

Observaciones

Nota Para asociados de IHV: la capacidad de supervisar la profundidad de la cola es muy importante para que los clientes accedan a la compilación de congestión y tomen medidas preventivas. Una profundidad de cola creciente para una cola de transmisión es un signo de aumento de la congestión en el vínculo de salida. 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 de entrada. 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 PDPostAndDrainBufferList llamada.
 

Ejemplos de

Para definir una función de 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 análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir una función de PDQueryQueueDepth denominada "MyPDQueryQueueDepth", use el tipo NDIS_PD_QUERY_QUEUE_DEPTH tal 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 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, vea Anotación del comportamiento de la función.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 10
servidor mínimo admitido Windows Server 2016
de la plataforma de destino de Windows
encabezado de ndis.h
irQL <= DISPATCH_LEVEL