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 |
---|---|
|
Operazione riuscita. |
|
La richiesta non è riuscita a causa di risorse insufficienti. |
|
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. |
|
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. |
|
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 |