Freigeben über


KeSetTargetProcessorDpcEx-Funktion (wdm.h)

Die KeSetTargetProcessorDpcEx Routine gibt den Prozessor an, auf dem eine DPC-Routine ausgeführt wird.

Syntax

NTSTATUS KeSetTargetProcessorDpcEx(
  [in, out] PKDPC             Dpc,
  [in]      PPROCESSOR_NUMBER ProcNumber
);

Parameter

[in, out] Dpc

Ein Zeiger auf das DPC-Objekt des Aufrufers. Dieser Parameter verweist auf eine KDPC--Struktur, bei der es sich um eine undurchsichtige Systemstruktur handelt, die das DPC-Objekt darstellt. Dieses Objekt muss zuvor von der KeInitializeDpc Routine initialisiert worden sein.

[in] ProcNumber

Ein Zeiger auf eine vom Aufrufer zugewiesene PROCESSOR_NUMBER Struktur, die den Zielprozessor identifiziert, auf dem der DPC in die Warteschlange gestellt und ausgeführt wird. Diese Struktur gibt eine Gruppe und einen Prozessor innerhalb dieser Gruppe an.

Rückgabewert

KeSetTargetProcessorDpcEx gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird Folgendes zurückgegeben:

Rückgabecode Beschreibung
STATUS_INVALID_PARAMETER
Der ProcNumber Parameter verweist auf eine ungültige Prozessornummer.

Bemerkungen

Jeder Prozessor in einem Multiprozessorsystem verfügt über eine eigene DPC-Warteschlange. KeSetTargetProcessorDpcEx gibt an, welche Prozessorwarteschlange das System verwenden soll, wenn der Treiber die KeInsertQueueDpc aufruft oder IoRequestDpc Routine, um einen DPC in die Warteschlange zu stellen, der später ausgeführt werden soll.

KeSetTargetProcessorDpcEx- kann den Zielprozessor sowohl für gewöhnliche DPCs als auch für -Thread-DPCsangeben. Ein gewöhnlicher DPC kann nicht von einem Thread mit hoher Priorität vorgebeutet werden, aber ein Thread-DPC kann von zeitkritischen Threads mit ausreichend hohen Prioritäten vorgebeutet werden.

Eine verwandte Routine, KeSetTargetProcessorDpc, gibt einen Zielprozessor für einen DPC an, aber diese Routine gibt im Gegensatz zu KeSetTargetProcessorDpcExkeine Gruppe für den Zielprozessor an. Ab Windows 7 wird KeSetTargetProcessorDpc davon ausgegangen, dass der Zielprozessor zur Gruppe 0 gehört. Dieses Verhalten stellt sicher, dass vorhandene Treiber, die KeSetTargetProcessorDpc- aufrufen und keine gruppenorientierten Features verwenden, ordnungsgemäß in Multiprozessorsystemen mit zwei oder mehr Gruppen ausgeführt werden. Treiber, die gruppenorientierte Features in Windows 7 und höheren Versionen des Windows-Betriebssystems verwenden, sollten jedoch KeSetTargetProcessorDpcEx anstelle von KeSetTargetProcessorDpcaufrufen.

Ein Aufruf von KeSetTargetProcessorDpcEx, der auftritt, nachdem ein DPC-Objekt in die Warteschlange gestellt wurde, hat keine Auswirkungen auf die Auswahl eines Prozessors für die DPC-Routine, auf der ausgeführt werden soll. Um die Auswahl des Zielprozessors zu steuern, muss ein KeSetTargetProcessorDpcEx--Aufruf erfolgen, bevor der Aufruf an KeInsertQueueDpc oder IoRequestDpc, das das DPC-Objekt in die Warteschlange stellt.

Weitere Informationen zu DPC-Warteschlangen finden Sie unter Organisation von DPC-Warteschlangen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 7.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- Beliebige Ebene

Siehe auch

IoRequestDpc

KDPC-

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

PROCESSOR_NUMBER