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 interruzioni in una coda di completamento NDK (CQ).

Per altre informazioni sulla moderazione degli interruzioni, vedere Moderazione degli interruzioni.

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

Il 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 di interruzione nel CQ indipendentemente dal valore del parametro ModerationCount . Se ModerationInterval è MAXULONG, La ModerazioneCount controlla la moderazione degli interruzioni nel CQ. Se La granularità timer dell'adattatore è maggiore dell'intervallo massimo di moderazione supportato o se la granularità timer dell'adattatore è maggiore, il provider può arrotondare il valore di intervallo.

[in] ModerationCount

Numero massimo di completamento che un provider può accumularsi nel CQ prima di interrompere la CPU host per soddisfare una richiesta di arm CQ. Se ModerationInterval è zero o uno, il provider non esegue alcuna moderazione di interruzione sul CQ indipendentemente dal valore del parametro ModerationInterval . Se ModerationCount è MAXULONG o maggiore della profondità del CQ, ModerationInterval controlla la moderazione dell'interruzione nel CQ.

Valore restituito

La funzione NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION restituisce uno dei codici NTSTATUS seguenti.

Codice restituito Descrizione
STATUS_SUCCESS
Operazione riuscita.
STATUS_INSUFFICIENT_RESOURCES
La richiesta non è riuscita a causa di risorse insufficienti.
STATUS_NOT_SUPPORTED
Il provider NDK non supporta il controllo di moderazione dell'interruzione CQ con NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION. Un provider che imposta il flag di NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORT nel membro AdapterFlags della struttura NDK_ADAPTER_INFO non deve restituire questo codice di stato.
STATUS_INVALID_PARAMETER_MIX
Il consumer NDK ha fornito un VALORE 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.

Commenti

I consumer NDK non devono chiamare NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION a meno che il provider non imposta il flag di NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED nel membro AdapterFlagsdella 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 interruzione. Il consumer NDK non deve chiamare questa funzione nello stesso CQ simultaneamente.

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 restituire da questa funzione. Tuttavia, il provider non deve ritardare l'applicazione delle impostazioni indefinitamente. 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 le impostazioni più recenti effettive non appena 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 interruzioni 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 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 di NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED devono comunque implementare questa funzione. In questo caso, questa funzione deve restituire STATUS_NOT_SUPPORTED.

Requisiti

Requisito Valore
Client minimo supportato Nessuna supportata, supportata in NDIS 6.30 e versioni successive.
Server minimo supportato Windows Server 2012
Piattaforma di destinazione Windows
Intestazione ndkpi.h (include Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Vedi anche

NDK_ADAPTER_INFO

NDK_CQ

NDK_CQ_DISPATCH