In testing the drivers for 2000, I have turned on the Driver Verifier and
enabled all of the Global Flags. I/O verification I set to Level 2.
Here is a code fragment that is giving me problems. It is in the dispatch
Read/Write function that prepares an IRP for transfer on our fibre channel
HBA.
PMDL pMdl = IoAllocateMdl(packet->DataBuffer,
packet->Length,
FALSE,
FALSE,
Irp);
__try {
MmProbeAndLockPages(pMdl,
KernelMode,
((packet->Direction < FC_RECEIVE) ?
IoWriteAccess :
IoReadAccess));
} __except(EXCEPTION_EXECUTE_HANDLER) {
status = GetExceptionCode();
CompleteRequest(Irp, status, 0);
return status;
}
GetExceptionCode returns a 0xC00000A1, or insufficient quota. That’s fine,
to handle it, I want to return to the user by completing the IRP.
CompleteRequest calls IoCompleteRequest and pops a blue screen, with
bugcheck 0x76. (NOTE: The documentation on this bugcheck is erroneous.)
Nothing I do, freeing pMdl, or unlocking pMdl resolves the bugcheck upon
completing the IRP.
How should this be handled?
Gary G. Little
Sr. Staff Engineer
Broadband Storage, LLC
xxxxx@broadstor.com
xxxxx@delphieng.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com