U
user_931196
Guest
I am working on a WDF driver, where an IOCTL is sent from user app for retrieving some event based info. Details are as below, thanks in advance for your help.
UserApp -> Driver1 -> Driver 2
Driver1:
Driver2:
--------> Event Occurs
Driver2 dequeues the WDFREQUEST, processes the event and completes the WDFREQUST Driver1's completion event gets called. It calls WdfRequestUnmarkCancelable before completing the request where the bugcheck occurs.
Driver Verifier:
************************************************************
Driver Verifier detected violation:
A driver has called IoCallDriver without setting the CancelRoutine in
the Irp to NULL.
************************************************************
-----------BugCheck Details------------------
WDF_VIOLATION (10d) The Kernel-Mode Driver Framework was notified that Windows detected an error in a framework-based driver. In general, the dump file will yield additional information about the driver that caused this bug check.
Arguments: Arg1: 0000000000000006, A fatal error was made in handling a WDF request. In this case, Parameter 2 further specifies the type of fatal error that has been made, as defined by the enumeration WDF_REQUEST_FATAL_ERROR.
Arg2: 0000000000000005, An attempt was made to retrieve a request from the wrong queue.
Arg3: ffffb08a7b558e38, A pointer to an IO_CSQ_IRP_CONTEXT structure, which contains a pointer to the IRP and a pointer to the IRP's queue. The structure belongs to a WDF request object. Please see the driver's WDF logs for more information.
Arg4: ffffb08a7a9d3de0, Reserved.
Continue reading...
UserApp -> Driver1 -> Driver 2
Driver1:
- Provides cancelation routine & marks the WDFREQUEST as cancelable,
- Saves the WDFREQUEST in its device context
- Sets completion routine and forwards the WDFREQUEST to Driver2 using WdfIoTargetFormatRequestForIoctl/WdfRequestSend
Driver2:
- Pends the request in manual power managed WDFQueue and waits for the event
--------> Event Occurs
Driver2 dequeues the WDFREQUEST, processes the event and completes the WDFREQUST Driver1's completion event gets called. It calls WdfRequestUnmarkCancelable before completing the request where the bugcheck occurs.
Driver Verifier:
************************************************************
Driver Verifier detected violation:
A driver has called IoCallDriver without setting the CancelRoutine in
the Irp to NULL.
************************************************************
-----------BugCheck Details------------------
WDF_VIOLATION (10d) The Kernel-Mode Driver Framework was notified that Windows detected an error in a framework-based driver. In general, the dump file will yield additional information about the driver that caused this bug check.
Arguments: Arg1: 0000000000000006, A fatal error was made in handling a WDF request. In this case, Parameter 2 further specifies the type of fatal error that has been made, as defined by the enumeration WDF_REQUEST_FATAL_ERROR.
Arg2: 0000000000000005, An attempt was made to retrieve a request from the wrong queue.
Arg3: ffffb08a7b558e38, A pointer to an IO_CSQ_IRP_CONTEXT structure, which contains a pointer to the IRP and a pointer to the IRP's queue. The structure belongs to a WDF request object. Please see the driver's WDF logs for more information.
Arg4: ffffb08a7a9d3de0, Reserved.
Continue reading...