Microsoft KB Archive/186778

From BetaArchive Wiki

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

Q186778



The information in this article applies to:


  • Microsoft Win32 Device Driver Kit (DDK) Windows 95





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 :
Issue type : kbprb
Technology : kbAudDeveloper kbWin95search kbWinDDKSearch kbWin32sSearch kbWin32DDK95 kbWin32DDKSearch


Last Reviewed: March 6, 1999
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.