Was ist der "DPC-Watchdog"?
Zusammenfassung :
Deferred Procedure Calls (DPCs) werden von einem DPC-Watchdog-Timer überwacht .
Wenn der DPC-Watchdog-Timer feststellt, dass ein DPC zu lange läuft, wird ein DPC_WATCHDOG_VIOLATION
Fehler generiert .
Ausführliche Erklärung
Zunächst müssen Sie verstehen, was ein DPC ist. Eine vereinfachte Erklärung lautet:
Ein Deferred Procedure Call (DPC) ist ein Mechanismus des Microsoft Windows-Betriebssystems, der es Tasks mit hoher Priorität (z. B. einem Interrupt-Handler) ermöglicht, erforderliche Tasks mit niedrigerer Priorität für die spätere Ausführung zu verschieben.
Dies ermöglicht Gerätetreibern und anderen Verbrauchern von Ereignissen auf niedriger Ebene, den Teil ihrer Verarbeitung mit hoher Priorität schnell durchzuführen und eine nicht kritische zusätzliche Verarbeitung für die Ausführung mit einer niedrigeren Priorität einzuplanen.
Aufruf der verzögerten Prozedur der Quelle
Windows benötigt einen Mechanismus, mit dem festgestellt werden kann, wann bei diesen Aufrufen für verzögerte Prozeduren etwas schief geht (deren Ausführung dauert zu lange und beeinträchtigt daher die Reaktionsfähigkeit des Systems).
Dieser Mechanismus ist der DPC-Watchdog-Timer :
Das Betriebssystem implementiert einen DPC-Watchdog-Timer, um zu erkennen, wann eine einzelne DPC-Routine zu lange ausgeführt wird oder wenn eine Reihe von DPC-Routinen in der Warteschlange zu lange hintereinander läuft.
Wenn DPC-Zeitüberschreitungsfehler aktiviert sind und entweder eine DPC-Routine das Zeitlimit für eine einzelne Routine überschreitet oder eine Reihe von DPC-Routinen das Gesamtzeitlimit überschreitet, wird eine Fehlerprüfung mit DPC_WATCHDOG_VIOLATION (0x133) durchgeführt.
...
DPC-Routinen sollten nur für kurze Zeiträume ausgeführt werden und möglichst viel Verarbeitung an Worker-Threads delegieren. Um die Reaktionsfähigkeit des Systems nicht zu beeinträchtigen, sollte eine typische DPC-Routine bei jedem Aufruf nicht länger als 100 Mikrosekunden ausgeführt werden.
Quelle KeQueryDpcWatchdogInformation Routine
Fehlerprüfung 0x133 DPC_WATCHDOG_VIOLATION
Diese Fehlerprüfung zeigt an, dass der DPC-Watchdog ausgeführt wurde, entweder weil er einen einzelnen Aufruf mit verzögerter Prozedur (DPC) erkannt hat oder weil das System längere Zeit auf einer Interrupt-Anforderungsebene (IRQL) von DISPATCH_LEVEL oder höher verbracht hat. Der Wert von Parameter 1 gibt an, ob ein einzelner DPC eine Zeitüberschreitung überschritten hat oder ob das System eine längere Zeitspanne bei IRQL DISPATCH_LEVEL oder höher verbracht hat.
DPCs sollten nicht länger als 100 Mikrosekunden und ISRs sollten nicht länger als 25 Mikrosekunden dauern. Die tatsächlichen Timeout-Werte im System sind jedoch viel höher eingestellt.