Función NdisMQueueDpcEx (ndis.h)

Los controladores de miniporte NDIS llaman a la función NdisMQueueDpcEx para programar llamadas DPC en CPU.

Sintaxis

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

Parámetros

[in] NdisInterruptHandle

Identificador de interrupción que el controlador de miniporte obtuvo en una llamada anterior a Función NdisMRegisterInterruptEx .

[in] MessageId

Un identificador de mensaje MSI para el DPC. Si el DPC es para una interrupción basada en líneas, este parámetro no se usa y se debe establecer en cero. De lo contrario, MessageId es un índice para IO_INTERRUPT_MESSAGE_INFO_ENTRY estructura dentro de IO_INTERRUPT_MESSAGE_INFO estructura. NDIS pasa un puntero a la estructura de IO_INTERRUPT_MESSAGE_INFO asociada en el miembro MessageInfoTable cuando el controlador se registra correctamente para MSI con la función NdisMRegisterInterruptEx .

[in] TargetProcessors

Mapa de bits que indica los procesadores de destino. NDIS debe programar un DPC para cada procesador de destino que se indique en el mapa de bits. Cada bit de TargetProcessors identifica una CPU. Si el autor de la llamada establece el bit 0, NDIS programa un DPC para la CPU 0. Si el autor de la llamada establece el bit 1, NDIS programa un DPC para la CPU 1, etc.

[in] MiniportDpcContext

Puntero a un área de contexto especificada por el autor de la llamada. NDIS pasa este puntero al parámetro MiniportDpcContext del MiniportInterruptDPC y Funciones MiniportMessageInterruptDPC .

Valor devuelto

NdisMQueueDpcEx devuelve un mapa de bits que indica los procesadores de destino. Cada bit del valor devuelto identifica una CPU.

NDIS programó correctamente un DPC para cada procesador de destino establecido en el mapa de bits. Si NDIS establece el bit 0, NDIS programó un DPC para la CPU 0. Si NDIS establece el bit 1, NDIS programó un DPC para la CPU 1, etc.

Si el controlador solicitó un DPC para una CPU y NDIS indica que no programó ese DPC, el DPC no estaba programado porque el DPC que se asigna a este par de interrupciones o procesadores ya estaba programado para esa CPU.

Comentarios

Los controladores de miniporte NDIS 6.20 y versiones posteriores llaman a NdisMQueueDpcEx para solicitar llamadas DPC para otros procesadores. NDIS llama a MiniportInterruptDPC o MiniportMessageInterruptDPC función para completar el procesamiento diferido de una interrupción.

NdisMQueueDpcEx es el mismo que la función NdisMQueueDpc , salvo que el parámetro TargetProcessors tiene un tipo de KGROUP_AFFINITY. Por lo tanto, NdisMQueueDpcEx puede programar DPC en procesadores de cualquier grupo de procesadores. Para programar DPC en más de un grupo de procesadores, puede usar varias llamadas a NdisMQueueDpcEx.

NotaNdisMQueueDpc, MiniportInterrupt y Las funciones MiniportMessageInterrupt tienen un parámetro TargetProcessors que es un ULONG. Este parámetro especifica los primeros 32 procesadores del grupo de procesadores 0.
 
Importante Los controladores NDIS 6.20 y versiones posteriores siempre deben usar NdisMQueueDpcEx para programar DPC.
 

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con NDIS 6.20 y versiones posteriores.
Plataforma de destino Universal
Encabezado ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL Cualquier nivel

Consulte también

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NdisMQueueDpc

NdisMRegisterInterruptEx