PRB: Queuing a DPC Multiple Times Causes Page-Fault in Win98
PSS ID Number: 186778
Article Last Modified on 3/6/1999
The information in this article applies to:
- Microsoft Win32 Device Driver Kit (DDK) Windows 95
This article was previously published under Q186778
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: kbprb KB186778
Technology: kbAudDeveloper kbWin32DDK95 kbWin32DDKSearch kbWin32sSearch kbWin95search kbWinDDKSearch