Hi,
On stressing my filter driver on XP, by executing a program stored on a CD
and ejecting the CD while it is loading, I got a verifier error 0xc9,
0x23A, which is described as “A driver has forwarded an IRP at an IRQL that
is illegal for this major code. (IRP specified.)”.
The stack is:
fc6a9c0c 80644931 nt!DbgBreakPoint
fc6a9c28 806449cd nt!ViBugcheckPrompt+0xf0
fc6a9ebc 80644a66 nt!VfBugcheckThrowException+0x8a
fc6a9fa8 806454b7 nt!VfBugcheckThrowIoException+0x8c
fc6a9fc8 80644206 nt!VfGenericVerifyNewIrp+0x5e
fc6a9fe8 80647dc6 nt!VfMajorVerifyNewIrp+0x56
fc6aa044 8063ca7f nt!IovpCallDriver1+0x377
fc6aa06c fb1efa74 nt!IovCallDriver+0x8c
fc6aa090 fb2017b5 iOraIcpt!SoftCdUtilReadFile+0x74
fc6aa144 fb1f9def iOraIcpt!SoftCdDrvFileRead+0x59b
fc6aa210 804ec04f iOraIcpt!SoftCdHookHook+0xa08
fc6aa220 8063ca91 nt!IopfCallDriver+0x31
fc6aa244 804e88bb nt!IovCallDriver+0x9e
fc6aa258 804e88db nt!IopPageReadInternal+0xf2
fc6aa278 804e8972 nt!IoPageRead+0x19
fc6aa2e8 804edf29 nt!MiDispatchFault+0x270
fc6aa338 804d7a5b nt!MmAccessFault+0xb0b
fc6aa338 80582e79 nt!KiTrap0E+0xb8
fc6aa414 8058300e nt!MiSecureVirtualMemory+0x105
fc6aa428 bf84036a nt!MmSecureVirtualMemory+0x13
The “iOraIcpt” calls are mine. The IRQL==2 and SoftCdUtilReadFile creates
an IRP_MJ_READ (with IoBuildSynchronousFsdRequest) and passes it down the
device chain.
I have some questions:
- Is there any IRQL constraint on IRP_MJ_READ IRPs in IoCallDriver?
- As this is in a paging context, do I need any extra flags in the IRP I
create and pass down? - Is it a “bad idea” to eject a CD-ROM from which you are currently
paging?
Thanks
Brian
You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com