Compartilhar via


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
STATUS_SUCCESS
A operação foi concluída com sucesso.
STATUS_INSUFFICIENT_RESOURCES
Falha na solicitação devido a recursos insuficientes.
STATUS_NOT_SUPPORTED
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.
STATUS_INVALID_PARAMETER_MIX
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.
Outros códigos status
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

Confira também

NDK_ADAPTER_INFO

NDK_CQ

NDK_CQ_DISPATCH