NdisMQueueDpcEx-Funktion (ndis.h)

NDIS-Miniporttreiber rufen die NdisMQueueDpcEx-Funktion auf, um DPC-Aufrufe auf CPUs zu planen.

Syntax

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

Parameter

[in] NdisInterruptHandle

Ein Interrupthandle, das der Miniporttreiber bei einem vorherigen Aufruf des abgerufen hat. NdisMRegisterInterruptEx-Funktion .

[in] MessageId

Eine MSI-Nachrichten-ID für den DPC. Wenn der DPC für einen zeilenbasierten Interrupt vorgesehen ist, wird dieser Parameter nicht verwendet, und er sollte auf 0 (null) festgelegt werden. Andernfalls ist MessageId ein Index für die IO_INTERRUPT_MESSAGE_INFO_ENTRY-Struktur in einem IO_INTERRUPT_MESSAGE_INFO Struktur. NDIS übergibt einen Zeiger auf die zugeordnete IO_INTERRUPT_MESSAGE_INFO-Struktur am MessageInfoTable-Member , wenn der Treiber erfolgreich für MSI mit der NdisMRegisterInterruptEx-Funktion registriert wird.

[in] TargetProcessors

Eine Bitmap, die Zielprozessoren angibt. NDIS sollte einen DPC für jeden Zielprozessor planen, der in der Bitmap angegeben ist. Jedes Bit in TargetProcessors identifiziert eine CPU. Wenn der Aufrufer Bit 0 festlegt, plant NDIS einen DPC für CPU 0. Wenn der Aufrufer Bit 1 festlegt, plant NDIS einen DPC für CPU 1 usw.

[in] MiniportDpcContext

Ein Zeiger auf einen vom Aufrufer angegebenen Kontextbereich. NDIS übergibt diesen Zeiger an den MiniportDpcContext-Parameter des MiniportInterruptDPC und MiniportMessageInterruptDPC-Funktionen .

Rückgabewert

NdisMQueueDpcEx gibt eine Bitmap zurück, die Zielprozessoren angibt. Jedes Bit im Rückgabewert identifiziert eine CPU.

NDIS hat erfolgreich einen DPC für jeden Zielprozessor geplant, der in der Bitmap festgelegt ist. Wenn NDIS Bit 0 festlegt, hat NDIS einen DPC für CPU 0 geplant. Wenn NDIS Bit 1 festlegt, hat NDIS einen DPC für CPU 1 usw. geplant.

Wenn der Treiber einen DPC für eine CPU angefordert hat und NDIS angibt, dass er diesen DPC nicht geplant hat, wurde der DPC nicht geplant, da der DPC, der diesem Interrupt/Prozessorpaar zugeordnet ist, bereits für diese CPU geplant war.

Hinweise

NDIS 6.20 und höher rufen Miniporttreiber NdisMQueueDpcEx auf, um DPC-Aufrufe für andere Prozessoren anzufordern. NDIS ruft miniportInterruptDPC oder auf. MiniportMessageInterruptDPC-Funktion , um die verzögerte Verarbeitung eines Interrupts abzuschließen.

NdisMQueueDpcEx ist identisch mit der NdisMQueueDpc-Funktion , mit der Ausnahme, dass der TargetProcessors-Parameter über einen Typ von KGROUP_AFFINITY verfügt. Daher kann NdisMQueueDpcEx DPCs auf Prozessoren in jeder Prozessorgruppe planen. Um DPCs in mehreren Prozessorgruppen zu planen, können Sie mehrere Aufrufe von NdisMQueueDpcEx verwenden.

HinweisNdisMQueueDpc, MiniportInterrupt und MiniportMessageInterrupt-Funktionen verfügen über einen TargetProcessors-Parameter , bei dem es sich um einen ULONG-Parameter handelt. Dieser Parameter gibt die ersten 32 Prozessoren in der Prozessorgruppe 0 an.
 
Wichtig NDIS 6.20- und höher-Treiber sollten immer NdisMQueueDpcEx verwenden, um DPCs zu planen.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.20 und höher.
Zielplattform Universell
Header ndis.h (include Ndis.h)
Bibliothek Ndis.lib
IRQL Beliebige Ebene

Weitere Informationen

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NdisMQueueDpc

NdisMRegisterInterruptEx