Condividi tramite


NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION funzione di callback (ndkpi.h)

La funzione NdkControlCqInterruptModeration (NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION) controlla la moderazione degli interrupt in una coda di completamento NDK (CQ).

Per altre informazioni sulla moderazione degli interrupt, vedere Interrupt Moderation.

Sintassi

NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION NdkFnControlCqInterruptModeration;

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

Parametri

[in] pNdkCq

Puntatore a un oggetto coda di completamento NDK (NDK_CQ).

[in] ModerationInterval

Numero massimo di microsecondi che un provider può rinviare l'interruzione della CPU host dopo un completamento inserito nel CQ soddisfa una richiesta arm. Se ModerationInterval è zero, il provider non esegue alcuna moderazione degli interrupt nel controllo di controllo di accesso indipendentemente dal valore del parametro ModerationCount. Se ModerationInterval è MAXULONG, ModerationCount controlla la moderazione degli interrupt in CQ. Se ModerationInterval è maggiore dell'intervallo di moderazione massimo supportato dall'adattatore o se la granularità del timer dell'adattatore è maggiore, il provider può arrotondamento del valore dell'intervallo.

[in] ModerationCount

Numero massimo di completamenti che un provider può accumulare nella CQ prima di interrompere la CPU host per soddisfare una richiesta arm CQ. Se ModerationInterval è zero o uno, il provider non esegue alcuna moderazione di interrupt in CQ indipendentemente dal valore del parametro ModerationInterval. Se ModerationCount è MAXULONG o maggiore della profondità di CQ, ModerationInterval controlla la moderazione degli interrupt in CQ.

Valore restituito

La funzione NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION restituisce uno dei codici NTSTATUS seguenti.

Codice restituito Descrizione
STATUS_SUCCESS
Operazione completata correttamente.
STATUS_INSUFFICIENT_RESOURCES
La richiesta non è riuscita a causa di risorse insufficienti.
STATUS_NOT_SUPPORTED
Il provider NDK non supporta il controllo di moderazione degli interrupt CQ con NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION. Un provider che imposta il flag NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORT nella struttura AdapterFlags della struttura NDK_ADAPTER_INFO membro non deve restituire questo codice di stato.
STATUS_INVALID_PARAMETER_MIX
Il consumer NDK ha fornito un MAXULONG per ModerationInterval e MAXULONG o un valore maggiore del numero di voci di completamento che il CQ può contenere per ModerationCount contemporaneamente.
Altri codici di stato
Si è verificato un errore.

Osservazioni

I consumer NDK non devono chiamare NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION a meno che il provider non imposti il flag NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED nel membro AdapterFlag s della struttura NDK_ADAPTER_INFO. Per un provider che imposta il flag NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED, il consumer NDK può chiamare questa funzione in qualsiasi momento dopo la creazione di un CQ. Il comportamento predefinito per un CQ non è una moderazione di interrupt. Il consumer NDK non deve chiamare questa funzione nello stesso CQ contemporaneamente.

Il consumer NDK non deve specificare un valore MAXULONG per ModerationInterval e MAXULONG o un valore maggiore del numero di voci di completamento che il CQ può contenere (CqDepth) per ModerationCount contemporaneamente. In caso contrario, il provider restituirà STATUS_INVALID_PARAMETER_MIX.

Il consumer NDK può chiamare NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION più volte. Un provider potrebbe non applicare le impostazioni prima di tornare da questa funzione. Tuttavia, il provider non deve ritardare l'applicazione delle impostazioni per un periodo illimitato. Se il consumer invia un'altra chiamata a questa funzione mentre il provider non ha ancora applicato le impostazioni da una chiamata precedente della funzione, il provider deve rendere effettive le impostazioni fornite più di recente il prima possibile. Ovvero, il provider deve annullare l'applicazione delle impostazioni precedenti e applicare le nuove impostazioni oppure attendere il completamento e l'applicazione delle impostazioni precedenti.

I provider che indicano il supporto per la moderazione degli interrupt con il flag NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED devono normalmente gestire NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION correttamente e restituire STATUS_SUCCESS. Tuttavia, un provider può non riuscire la richiesta a causa di una carenza di risorse, ad esempio un errore di allocazione della memoria. In questo caso, il provider deve restituire STATUS_INSUFFICIENT_RESOURCES. I provider non possono restituire STATUS_PENDING da questa funzione. I provider che non indicano il supporto per questa funzione con il flag NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED devono comunque implementare questa funzione. In questo caso, questa funzione deve restituire STATUS_NOT_SUPPORTED.

Fabbisogno

Requisito Valore
client minimo supportato Nessuna supportata, supportata in NDIS 6.30 e versioni successive.
server minimo supportato Windows Server 2012
piattaforma di destinazione Finestre
intestazione ndkpi.h (include Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Vedere anche

NDK_ADAPTER_INFO

NDK_CQ

NDK_CQ_DISPATCH