Compartilhar via


Função NdisMQueueDpcEx (ndis.h)

Os drivers de miniporto NDIS chamam a função NdisMQueueDpcEx para agendar chamadas DPC em CPUs.

Sintaxe

KAFFINITY NdisMQueueDpcEx(
  [in] IN NDIS_HANDLE     NdisInterruptHandle,
  [in] IN ULONG           MessageId,
  [in] IN PGROUP_AFFINITY TargetProcessors,
  [in] IN PVOID           MiniportDpcContext
);

Parâmetros

[in] NdisInterruptHandle

Um identificador de interrupção que o driver de miniporte obteve em uma chamada anterior para o Função NdisMRegisterInterruptEx .

[in] MessageId

Uma ID de mensagem MSI para o DPC. Se o DPC for para uma interrupção baseada em linha, esse parâmetro não será usado e deverá ser definido como zero. Caso contrário, MessageId é um índice para o IO_INTERRUPT_MESSAGE_INFO_ENTRY estrutura dentro de um IO_INTERRUPT_MESSAGE_INFO estrutura. O NDIS passa um ponteiro para a estrutura IO_INTERRUPT_MESSAGE_INFO associada no membro MessageInfoTable quando o driver se registra com êxito para MSI com a função NdisMRegisterInterruptEx .

[in] TargetProcessors

Um bitmap que indica processadores de destino. O NDIS deve agendar um DPC para cada processador de destino indicado no bitmap. Cada bit em TargetProcessors identifica uma CPU. Se o chamador definir o bit 0, o NDIS agenda um DPC para CPU 0. Se o chamador definir o bit 1, o NDIS agenda um DPC para CPU 1 e assim por diante.

[in] MiniportDpcContext

Um ponteiro para uma área de contexto especificada pelo chamador. O NDIS passa esse ponteiro para o parâmetro MiniportDpcContext do MiniportInterruptDPC eFunções MiniportMessageInterruptDPC.

Retornar valor

NdisMQueueDpcEx retorna um bitmap que indica processadores de destino. Cada bit no valor retornado identifica uma CPU.

O NDIS agendou com êxito um DPC para cada processador de destino definido no bitmap. Se o NDIS definir o bit 0, o NDIS agendou um DPC para CPU 0. Se o NDIS definir o bit 1, o NDIS agendou um DPC para CPU 1 e assim por diante.

Se o driver solicitou um DPC para uma CPU e o NDIS indica que ele não agendou esse DPC, o DPC não foi agendado porque o DPC mapeado para esse par de interrupção/processador já estava agendado para essa CPU.

Comentários

Os drivers de miniporto NDIS 6.20 e posteriores chamam NdisMQueueDpcEx para solicitar chamadas DPC para outros processadores. O NDIS chama o MiniportInterruptDPC ou Função MiniportMessageInterruptDPC para concluir o processamento adiado de uma interrupção.

NdisMQueueDpcEx é o mesmo que a função NdisMQueueDpc , exceto que o parâmetro TargetProcessors tem um tipo de KGROUP_AFFINITY. Portanto, NdisMQueueDpcEx pode agendar DPCs em processadores em qualquer grupo de processadores. Para agendar DPCs em mais de um grupo de processadores, você pode usar várias chamadas para NdisMQueueDpcEx.

Nota O NdisMQueueDpc, MiniportInterrupt e As funções MiniportMessageInterrupt têm um parâmetro TargetProcessors que é um ULONG. Esse parâmetro especifica os primeiros 32 processadores no grupo de processadores 0.
 
Importante Os drivers NDIS 6.20 e posteriores sempre devem usar NdisMQueueDpcEx para agendar DPCs.
 

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.20 e posterior.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL Qualquer nível

Confira também

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NdisMQueueDpc

NdisMRegisterInterruptEx