NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION função de retorno de chamada (ndkpi.h)
A função NdkControlCqInterruptModeration (NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION) controla a moderação de interrupção em uma CQ (fila de conclusão do NDK).
Para obter mais informações sobre moderação de interrupção, consulte Moderação de interrupção.
Sintaxe
NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION NdkFnControlCqInterruptModeration;
NTSTATUS NdkFnControlCqInterruptModeration(
[in] NDK_CQ *pNdkCq,
[in] ULONG ModerationInterval,
[in] ULONG ModerationCount
)
{...}
Parâmetros
[in] pNdkCq
Um ponteiro para um objeto de fila de conclusão do NDK (NDK_CQ).
[in] ModerationInterval
O número máximo de microssegundos que um provedor pode adiar interrompendo a CPU do host após uma conclusão colocada no CQ atende a uma solicitação arm. Se ModerationInterval for zero, o provedor não executará nenhuma moderação de interrupção no CQ, independentemente do valor do parâmetro ModerationCount . Se ModerationInterval for MAXULONG, o ModerationCount controlará a moderação de interrupção no CQ. Se ModerationInterval for maior que o intervalo máximo de moderação compatível com o adaptador ou se a granularidade do temporizador do adaptador for maior, o provedor poderá arredondar o valor do intervalo.
[in] ModerationCount
O número máximo de conclusões que um provedor pode acumular no CQ antes de interromper a CPU do host para atender a uma solicitação de arm CQ. Se ModerationInterval for zero ou um, o provedor não executará nenhuma moderação de interrupção no CQ, independentemente do valor do parâmetro ModerationInterval . Se ModerationCount for MAXULONG ou maior que a profundidade do CQ, ModerationInterval controlará a moderação de interrupção no CQ.
Retornar valor
A função NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION retorna um dos seguintes códigos NTSTATUS.
Código de retorno | Descrição |
---|---|
|
A operação foi concluída com sucesso. |
|
Falha na solicitação devido a recursos insuficientes. |
|
O provedor NDK não dá suporte ao controle de moderação de interrupção do CQ com NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION. Um provedor que define o sinalizador NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORT no membro AdapterFlags da estrutura NDK_ADAPTER_INFO não deve retornar esse código status. |
|
O consumidor do NDK forneceu um MAXULONG para ModeraçãoInterval e MAXULONG ou um valor maior que o número de entradas de conclusão que o CQ pode conter para ModerationCount ao mesmo tempo. |
|
Ocorreu um erro. |
Comentários
Os consumidores do NDK não devem chamar NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION a menos que o provedor defina o sinalizador NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED no membro AdapterFlags da estrutura NDK_ADAPTER_INFO. Para um provedor que define o sinalizador NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED, o consumidor do NDK pode chamar essa função a qualquer momento após a criação de um CQ. O comportamento padrão de um CQ não é moderação de interrupção. O consumidor do NDK não deve chamar essa função no mesmo CQ simultaneamente.
O consumidor do NDK não deve especificar um MAXULONG para ModeraçãoInterval e MAXULONG ou um valor maior do que o número de entradas de conclusão que o CQ pode conter (CqDepth) para ModerationCount ao mesmo tempo. Caso contrário, o provedor retornará STATUS_INVALID_PARAMETER_MIX.
O consumidor do NDK pode chamar NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION várias vezes. Um provedor pode não aplicar as configurações antes de retornar dessa função. No entanto, o provedor não deve atrasar a aplicação das configurações indefinidamente. Se o consumidor emitir outra chamada para essa função enquanto o provedor ainda não tiver aplicado as configurações de uma invocação anterior da função, o provedor deverá tornar as configurações fornecidas mais recentemente eficazes o mais rápido possível. Ou seja, o provedor deve cancelar o aplicativo das configurações anteriores e aplicar as novas configurações ou aguardar a conclusão do aplicativo das configurações anteriores e aplicar as novas configurações.
Os provedores que indicam suporte para moderação de interrupção com o sinalizador NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED normalmente devem lidar com NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION com êxito e retornar STATUS_SUCCESS. No entanto, um provedor pode falhar na solicitação devido a uma escassez de recursos, como uma falha de alocação de memória. Nesse caso, o provedor deve retornar STATUS_INSUFFICIENT_RESOURCES. Os provedores não podem retornar STATUS_PENDING dessa função. Provedores que não indicam suporte para essa função com o sinalizador NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED ainda devem implementar essa função. Nesse caso, essa função deve retornar STATUS_NOT_SUPPORTED.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Nenhum com suporte, com suporte no NDIS 6.30 e posterior. |
Servidor mínimo com suporte | Windows Server 2012 |
Plataforma de Destino | Windows |
Cabeçalho | ndkpi.h (inclua Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |