<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Deferred_Procedure_Call</id>
	<title>Deferred Procedure Call - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Deferred_Procedure_Call"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Deferred_Procedure_Call&amp;action=history"/>
	<updated>2026-10-25T16:47:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Deferred_Procedure_Call&amp;diff=5045123&amp;oldid=prev</id>
		<title>imported&gt;Dawnseeker2000: script-assisted date audit and style fixes per MOS:NUM</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Deferred_Procedure_Call&amp;diff=5045123&amp;oldid=prev"/>
		<updated>2024-04-03T00:22:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/MOSNUMscript&quot; class=&quot;extiw&quot; title=&quot;wikipedia:MOSNUMscript&quot;&gt;script&lt;/a&gt;-assisted date audit and style fixes per &lt;a href=&quot;/wiki143/index.php?title=MOS:NUM&quot; class=&quot;mw-redirect&quot; title=&quot;MOS:NUM&quot;&gt;MOS:NUM&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Microsoft Windows operating system mechanism}}&lt;br /&gt;
{{Use dmy dates|date=April 2024}}&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;Deferred Procedure Call&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;DPC&amp;#039;&amp;#039;&amp;#039;) is a [[Microsoft Windows]] operating system mechanism which allows high-priority tasks (e.g. an [[interrupt handler]]) to defer required but lower-priority tasks for later execution.  This permits device drivers and other low-level event consumers to perform the high-priority part of their processing quickly, and schedule non-critical additional processing for execution at a lower priority.&lt;br /&gt;
&lt;br /&gt;
DPCs are implemented by DPC objects which are created and initialized by the [[Kernel (computer science)|kernel]] when a [[device driver]] or some other kernel mode program issues DPC requests. DPC requests are added to the end of a DPC [[Queue (data structure)|queue]]. Each processor has a separate DPC queue. DPCs have three priority levels: low, medium, and high. By default, all DPCs are set to medium priority. When Windows drops to an [[IRQL (Windows)|IRQL]] of Dispatch/DPC level, it checks the DPC queue for any pending DPCs and executes them until the queue is empty or some other interrupt with a higher IRQL occurs.&lt;br /&gt;
&lt;br /&gt;
For example, when the clock interrupt is generated, the clock interrupt handler generally increments the counter of the current thread to calculate the total execution time of that thread, and decrements its [[Time slice|quantum]] time remaining by 1. When the counter drops to zero, the thread scheduler has to be invoked to choose the next thread to be executed on that processor and dispatcher to perform a context switch. Since the clock interrupt occurs at a much higher IRQL, it will be desirable to perform this thread dispatching which is a less critical task at a later time when the processor&amp;#039;s IRQL drops. So the clock interrupt handler requests a DPC object and adds it to the end of the DPC queue which will process the dispatching when the processor&amp;#039;s IRQL drops to DPC/Dispatch level.&lt;br /&gt;
&lt;br /&gt;
When working with streaming audio or video that uses interrupts, DPCs are used to process the audio in each buffer as they stream in.  If another DPC (from a poorly written driver) takes too long and another interrupt generates a new buffer of data, before the first one can be processed, a [[Dropout (electronics)|drop-out]] results.&amp;lt;ref&amp;gt;{{cite web |author=Ute Eberhardt |url=http://www.thesycon.de/eng/latency_check.shtml |title=DPC Latency Checker |publisher=Thesycon.de |date=27 June 2012 |access-date=14 October 2017 |archive-date=15 October 2017 |archive-url=https://web.archive.org/web/20171015045634/http://www.thesycon.de/eng/latency_check.shtml |url-status=dead }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
;General&lt;br /&gt;
*{{cite book |url=http://my.safaribooksonline.com/0130204315/ch03lev1sec3?portal=oreilly |author=Art Baker &amp;amp; Jerry Lozano. |title=Windows 2000 Device Driver Book: A Guide for Programmers, Second Edition, The |year=2000 |publisher=Prentice Hall. |isbn=978-0-13-020431-8 |access-date=7 November 2012 |archive-date=15 April 2012 |archive-url=https://web.archive.org/web/20120415103825/http://my.safaribooksonline.com/0130204315/ch03lev1sec3?portal=oreilly |url-status=dead }}&lt;br /&gt;
*[https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/introduction-to-dpc-objects Microsoft Docs: Deferred Procedure Calls (DPCs)]&lt;br /&gt;
&lt;br /&gt;
;Specific&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Subroutines]]&lt;br /&gt;
[[Category:Interrupts]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Windows-stub}}&lt;/div&gt;</summary>
		<author><name>imported&gt;Dawnseeker2000</name></author>
	</entry>
</feed>