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.
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 |