NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION fonction de rappel (ndkpi.h)

La fonction NdkControlCqInterruptModeration (NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION) contrôle la modération des interruptions sur une file d’attente d’achèvement (CQ) NDK.

Pour plus d’informations sur la modération des interruptions, consultez Modération des interruptions.

Syntaxe

NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION NdkFnControlCqInterruptModeration;

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

Paramètres

[in] pNdkCq

Pointeur vers un objet de file d’attente d’achèvement NDK (NDK_CQ).

[in] ModerationInterval

Le nombre maximal de microsecondes qu’un fournisseur peut différer l’interruption de l’UC hôte après qu’une complétion placée dans le CQ répond à une demande d’arm. Si ModerationInterval est égal à zéro, le fournisseur n’effectue aucune modération d’interruption sur le CQ, quelle que soit la valeur du paramètre ModerationCount . Si ModerationInterval a la valeur MAXULONG, moderationCount contrôle la modération des interruptions sur le CQ. Si ModerationInterval est supérieur à l’intervalle de modération maximal pris en charge par l’adaptateur ou si la granularité du minuteur de l’adaptateur est supérieure, le fournisseur peut arrondir la valeur d’intervalle.

[in] ModerationCount

Nombre maximal d’achèvements qu’un fournisseur peut accumuler dans le CQ avant d’interrompre le processeur hôte pour répondre à une demande d’arm CQ. Si ModerationInterval est égal à zéro ou à un, le fournisseur n’effectue aucune modération d’interruption sur le CQ, quelle que soit la valeur du paramètre ModerationInterval . Si ModerationCount a la valeur MAXULONG ou dépasse la profondeur du CQ, ModerationInterval contrôle la modération des interruptions sur le CQ.

Valeur retournée

La fonction NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION retourne l’un des codes NTSTATUS suivants.

Code de retour Description
STATUS_SUCCESS
L’opération s’est terminée avec succès.
STATUS_INSUFFICIENT_RESOURCES
La demande a échoué en raison de ressources insuffisantes.
STATUS_NOT_SUPPORTED
Le fournisseur NDK ne prend pas en charge le contrôle de modération des interruptions CQ avec NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION. Un fournisseur qui définit l’indicateur NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORT dans le membre AdapterFlags de la structure NDK_ADAPTER_INFO ne doit pas retourner ce code status.
STATUS_INVALID_PARAMETER_MIX
Le consommateur NDK a fourni un MAXULONG pour ModerationInterval et MAXULONG ou une valeur supérieure au nombre d’entrées d’achèvement que le CQ peut contenir pour ModerationCount en même temps.
Autres codes status
Une erreur est survenue.

Remarques

Les consommateurs NDK ne doivent pas appeler NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION, sauf si le fournisseur définit l’indicateur de NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED dans le membre AdapterFlags de la structure NDK_ADAPTER_INFO. Pour un fournisseur qui définit l’indicateur NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED, le consommateur NDK peut appeler cette fonction à tout moment après la création d’un CQ. Le comportement par défaut d’un CQ est l’absence de modération des interruptions. Le consommateur NDK ne doit pas appeler cette fonction sur le même CQ simultanément.

Le consommateur NDK ne doit pas spécifier un MAXULONG pour ModerationInterval et MAXULONG ou une valeur supérieure au nombre d’entrées d’achèvement que le CQ peut contenir (CqDepth) pour ModerationCount en même temps. Sinon, le fournisseur retourne STATUS_INVALID_PARAMETER_MIX.

Le consommateur NDK peut appeler NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION plusieurs fois. Un fournisseur peut ne pas appliquer les paramètres avant de revenir à partir de cette fonction. Toutefois, le fournisseur ne doit pas retarder indéfiniment l’application des paramètres. Si le consommateur émet un autre appel à cette fonction alors que le fournisseur n’a pas encore appliqué les paramètres d’un appel précédent de la fonction, le fournisseur doit appliquer dès que possible les derniers paramètres fournis. Autrement dit, le fournisseur doit annuler l’application des paramètres précédents et appliquer les nouveaux paramètres, ou attendre que l’application des paramètres précédents se termine et applique les nouveaux paramètres.

Les fournisseurs qui indiquent la prise en charge de la modération des interruptions avec l’indicateur NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED doivent normalement gérer correctement NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION et retourner STATUS_SUCCESS. Toutefois, un fournisseur peut échouer la demande en raison d’une pénurie de ressources, telle qu’un échec d’allocation de mémoire. Dans ce cas, le fournisseur doit retourner STATUS_INSUFFICIENT_RESOURCES. Les fournisseurs ne peuvent pas retourner STATUS_PENDING de cette fonction. Les fournisseurs qui n’indiquent pas la prise en charge de cette fonction avec l’indicateur NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED doivent toujours implémenter cette fonction. Dans ce cas, cette fonction doit retourner STATUS_NOT_SUPPORTED.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Aucune prise en charge, prise en charge dans NDIS 6.30 et versions ultérieures.
Serveur minimal pris en charge Windows Server 2012
Plateforme cible Windows
En-tête ndkpi.h (incluez Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Voir aussi

NDK_ADAPTER_INFO

NDK_CQ

NDK_CQ_DISPATCH