Typen von APCs

Ein asynchroner Prozeduraufruf (APC) ist eine Funktion, die asynchron ausgeführt wird. APCs ähneln verzögerten Prozeduraufrufen (DeFerred Procedure Calls, DPCs), aber im Gegensatz zu DPCs werden APCs im Kontext eines bestimmten Threads ausgeführt. Treiber (mit Ausnahme von Dateisystemen und Dateisystemfiltertreibern) verwenden APCs nicht direkt, aber andere Teile des Betriebssystems, daher müssen Sie wissen, wie APCs funktionieren.

Das Windows-Betriebssystem verwendet vier Arten von APCs:

  • Spezielle Benutzermodus-APCs werden streng im Benutzermodus ausgeführt und immer ausgeführt, auch wenn sich der Zielthread nicht in einem warnbaren Wartezustand befindet. Weitere Informationen zu speziellen Benutzermodus-APCs finden Sie unter QueueUserAPC2.

  • Reguläre Benutzermodus-APCs werden ausschließlich im Benutzermodus ausgeführt, und zwar nur, wenn sich der Zielthread in einem warnbaren Wartezustand befindet. Das Betriebssystem verwendet reguläre Benutzer-APCs, um Mechanismen wie überlappende E/A und die Win32-Routine QueueUserApc zu implementieren.

  • Normale Kernel-APCs werden im Kernelmodus unter IRQL = PASSIVE_LEVEL ausgeführt. Ein normaler Kernel-APC entfernt sämtlichen Benutzermoduscode, einschließlich Benutzer-APCs. Normale Kernel-APCs werden in der Regel von Dateisystemen und Dateisystemfiltertreibern verwendet.

  • Spezielle Kernel-APCs werden im Kernelmodus unter IRQL = APC_LEVEL ausgeführt. Ein spezieller Kernel-APC entfernt Benutzermoduscode und Kernelmoduscode, der unter IRQL = PASSIVE_LEVEL ausgeführt wird, einschließlich Benutzer-APCs und normalen Kernel-APCs. Das Betriebssystem verwendet spezielle Kernel-APCs, um Vorgänge wie den Abschluss von E/A-Anforderungen zu verarbeiten.

Eine Liste der IRQLs von der niedrigsten bis zur höchsten Priorität finden Sie unter Verwalten von Hardwareprioritäten.