Hi,
I am implementing a function driver that use a cancelable queue, of some strange reason ‘CsqCompleteCanceledIrp’ is being called with no perior call to ‘CsqRemoveIrp’…
What may cause such a strange behavior ?
Microsoft specifically indicate that the queues ‘CsqRemoveIrp’ is always called before ‘CsqCompleteCanceledIrp’ is called, see the following link for details:
Following is the calls stack as shown by SoftIce:
SETSDriver!IrpQueue::CsqCompleteCanceledIrp // My custom implementation
SETSDriver!IopCsqCancelRoutine+005A // My App ??? ( no such method )
ntoskrnl!IoCancelIrp+0058
ntoskrnl!IoCreateDevice+245F
ntoskrnl!IoQueryFileInformation+01EA
ntoskrnl!ExWaitForRundownProtectionRelease+00BF
ntoskrnl!SeCreateClientSecurityFromSubjectContext+00F3
It seems as-if this happens while my DriverEntry create the device object, BUT, stepping through the code I can clearly see IoCreateDevice cimpolete successfully after which the IrpQueue is being created…
WHAT MAY CAUSE THIS PROBLEM ???
May this be a BUG with the OS? I am using WinXP Pro SP1 running on a VMWare…
Many thanks,
Naddav
Start your day with Yahoo! - make it your home page