PRB: Queuing a DPC Multiple Times Causes Page-Fault in Win98

ID: Q186778


The information in this article applies to:


SYMPTOMS

Under Windows 98, Windows 95 OSR2.1, and Windows 95 OSR 2.5, when a WDM driver initializes and queues a DPC and then re-initializes and re-queues the same DPC before it has been removed from the queue, a page-fault occurs.


CAUSE

The Windows 95 and Windows 98 DPC queuing mechanism does not check if a DPC being added to the DPC queue already exists in the queue. When a DPC is removed from the queue, its forward link is set to NULL. This causes a problem if the DPC that is being queued is already in the queue, because it breaks the DPC linked list and causes a page-fault when VMM attempts to dequeue the DPC after the break in the list.


RESOLUTION

Any WDM driver running under Windows 98 or Windows 95 must ensure that it never re-inserts a DPC into the DPC queue that is already in the queue.

Additional query words: kbDSupport kbdsh kbNoKeyword DPC KeInsertQueueDpc KeInitializeDpc


Keywords          : 
Version           : WINDOWS:4.0,5.0
Platform          : WINDOWS 
Issue type        : kbprb 

Last Reviewed: March 4, 1999