Compartir a través de


NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION función de devolución de llamada (ndkpi.h)

La función NdkControlCqInterruptModeration (NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION) controla la moderación de interrupciones en una cola de finalización de NDK (CQ).

Para obtener más información sobre la moderación de interrupciones, consulte Moderación de interrupciones.

Sintaxis

NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION NdkFnControlCqInterruptModeration;

NTSTATUS NdkFnControlCqInterruptModeration(
  [in] NDK_CQ *pNdkCq,
  [in] ULONG ModerationInterval,
  [in] ULONG ModerationCount
)
{...}

Parámetros

[in] pNdkCq

Puntero a un objeto de cola de finalización NDK (NDK_CQ).

[in] ModerationInterval

El número máximo de microsegundos que un proveedor puede aplazar la interrupción de la CPU del host después de una finalización colocada en el CQ satisface una solicitud de arm. Si ModerationInterval es cero, el proveedor no realiza ninguna moderación de interrupción en el CQ, independientemente del valor del parámetro ModerationCount . Si ModerationInterval es MAXULONG, ModerationCount controla la moderación de interrupción en el CQ. Si ModerationInterval es mayor que el intervalo de moderación máximo que admite el adaptador o si la granularidad del temporizador del adaptador es mayor, el proveedor puede redondear el valor del intervalo.

[in] ModerationCount

Número máximo de finalizaciones que un proveedor puede acumular en el CQ antes de interrumpir la CPU del host para satisfacer una solicitud de arm de CQ. Si ModerationInterval es cero o uno, el proveedor no realiza ninguna moderación de interrupción en el CQ, independientemente del valor del parámetro ModerationInterval . Si ModerationCount es MAXULONG o mayor que la profundidad del CQ, ModerationInterval controla la moderación de interrupción en el CQ.

Valor devuelto

La función NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION devuelve uno de los siguientes códigos NTSTATUS.

Código devuelto Descripción
STATUS_SUCCESS
La operación se ha completado correctamente.
STATUS_INSUFFICIENT_RESOURCES
Error en la solicitud debido a recursos insuficientes.
STATUS_NOT_SUPPORTED
El proveedor NDK no admite el control de moderación de interrupciones de CQ con NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION. Un proveedor que establece la marca NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORT en el miembro AdapterFlags de la estructura NDK_ADAPTER_INFO no debe devolver este código de estado.
STATUS_INVALID_PARAMETER_MIX
El consumidor de NDK proporcionó un VALOR MAXULONG para ModerationInterval y MAXULONG o un valor mayor que el número de entradas de finalización que el CQ puede contener para ModerationCount al mismo tiempo.
Otros códigos de estado
Se produjo un error.

Comentarios

Los consumidores de NDK no deben llamar a NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION a menos que el proveedor establezca la marca NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED en el miembro AdapterFlags de la estructura NDK_ADAPTER_INFO. Para un proveedor que establece la marca NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED, el consumidor de NDK puede llamar a esta función en cualquier momento después de crear un CQ. El comportamiento predeterminado de un CQ no es ninguna moderación de interrupción. El consumidor de NDK no debe llamar a esta función simultáneamente en el mismo CQ.

El consumidor de NDK no debe especificar un valor MAXULONG para ModerationInterval y MAXULONG o un valor mayor que el número de entradas de finalización que el CQ puede contener (CqDepth) para ModerationCount al mismo tiempo. De lo contrario, el proveedor devolverá STATUS_INVALID_PARAMETER_MIX.

El consumidor de NDK puede llamar a NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION varias veces. Es posible que un proveedor no aplique la configuración antes de volver de esta función. Sin embargo, el proveedor no debe retrasar la aplicación de la configuración indefinidamente. Si el consumidor emite otra llamada a esta función mientras el proveedor aún no ha aplicado la configuración de una invocación anterior de la función, el proveedor debe hacer que la configuración proporcionada más recientemente se aplique lo antes posible. Es decir, el proveedor debe cancelar la aplicación de la configuración anterior y aplicar la nueva configuración, o esperar a que la aplicación de la configuración anterior se complete y aplique la nueva configuración.

Los proveedores que indican la compatibilidad con la moderación de interrupciones con la marca NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED normalmente deben controlar NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION correctamente y devolver STATUS_SUCCESS. Sin embargo, un proveedor puede producir un error en la solicitud debido a una escasez de recursos, como un error de asignación de memoria. En este caso, el proveedor debe devolver STATUS_INSUFFICIENT_RESOURCES. Los proveedores no pueden devolver STATUS_PENDING de esta función. Los proveedores que no indican compatibilidad con esta función con la marca NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED deben seguir implementando esta función. En este caso, esta función debe devolver STATUS_NOT_SUPPORTED.

Requisitos

Requisito Value
Cliente mínimo compatible Ninguno compatible, compatible con NDIS 6.30 y versiones posteriores.
Servidor mínimo compatible Windows Server 2012
Plataforma de destino Windows
Encabezado ndkpi.h (incluya Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Consulte también

NDK_ADAPTER_INFO

NDK_CQ

NDK_CQ_DISPATCH