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 a moderação de interrupção, consulte de 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 a interrupção da CPU do host após uma conclusão colocada no CQ atende a uma solicitação de braço. Se O Desinterval for zero, o provedor não executará nenhuma moderação de interrupção no CQ, independentemente do valor do parâmetro ModerationCount. Se o ModerationInterval for MAXULONG, o ModerationCount controlará a moderação de interrupção no CQ. Se ModerationInterval for maior que o intervalo de moderação máximo 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 do braço do CQ. Se o Do 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.

Valor de retorno

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 êxito.
STATUS_INSUFFICIENT_RESOURCES
A solicitação falhou devido a recursos insuficientes.
STATUS_NOT_SUPPORTED
O provedor NDK não dá suporte ao controle de moderação de interrupção de 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 de 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 O ModerationCount ao mesmo tempo.
Outros códigos de status
Ocorreu um erro.

Observações

Os consumidores do NDK não devem chamar NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION a menos que o provedor defina o sinalizador de 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 é a 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 o DeSvalorInterval e MAXULONG ou um valor maior do que o número de entradas de conclusão que o CQ pode conter (CqDepth ) para o 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 efetivas 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 da aplicação das configurações anteriores e aplicar as novas configurações.

Provedores que indicam suporte para moderação de interrupção com o sinalizador de 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 falta 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
de cliente com suporte mínimo Nenhum com suporte, com suporte no NDIS 6.30 e posterior.
servidor com suporte mínimo Windows Server 2012
da Plataforma de Destino Windows
cabeçalho ndkpi.h (inclua Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Consulte também

NDK_ADAPTER_INFO

NDK_CQ

NDK_CQ_DISPATCH