Hello All !
I’m writting a filter driver. In this driver I put off some IRPs and
after user-app decision complete it. (in a worker thread)
Works fine at first sight.
The problem occures when user-app decides too long. In this case
completting of an IRP results in system crash.
to some everything up I can say the following :
- system crashed if I execute IoCompleteRequest
- It happens not for every IRP. There must be specific conditions.
(for example, RealOne player runs updater periodically,
and it’s the updater who produces such IRPs !!!)
- IRP to be completed has Cancel flag set to TRUE !!!
- There is no Cancel-routine when I obtain IRP (in CompletionRoutine)
and when I call IoCompleteRequest too…
- If I dont complete Irp wich Cancel flag, the system cannot start
after reboot (that means, that there are IRPs to be completed with
such cancel flags …)
I’m so confused… please, somebody help me !!!
many many thanks in advance.
Foxgen
You have to set cancel routine for IRPs that stay pending for a long time.
When this routine is beeing called it is a signal that the IRP need to be
completed. There is potential race condition between normal completion and
completion as a result cancelling. Check DDK for information how to properly
cancel IRP.
Alexei.
“xxxxx@yandex” wrote in message news:xxxxx@ntdev…
>
> Hello All !
> I’m writting a filter driver. In this driver I put off some IRPs and
> after user-app decision complete it. (in a worker thread)
> Works fine at first sight.
> The problem occures when user-app decides too long. In this case
> completting of an IRP results in system crash.
> to some everything up I can say the following :
> 1. system crashed if I execute IoCompleteRequest
> 2. It happens not for every IRP. There must be specific conditions.
> (for example, RealOne player runs updater periodically,
> and it’s the updater who produces such IRPs !!!)
> 3. IRP to be completed has Cancel flag set to TRUE !!!
> 4. There is no Cancel-routine when I obtain IRP (in CompletionRoutine)
> and when I call IoCompleteRequest too…
> 5. If I dont complete Irp wich Cancel flag, the system cannot start
> after reboot (that means, that there are IRPs to be completed with
> such cancel flags …)
>
> I’m so confused… please, somebody help me !!!
>
> many many thanks in advance.
> Foxgen
>
>
>
>
>
>
>