When I get the original read IRP I put it on an internal queue and mark it
pending then dispatch the substitute. When I complete my substitute IRP I
remove the original IRP from the queue and issue IoCompleteRequest with
STATUS_SUCCESS for the original and return STATUS_MORE_PROCESSING_REQUIRED
for my substitute. Then I get a KerKLUNK BlueScreen page fault
-----Original Message-----
From: Jamey Kirby [mailto:xxxxx@storagecraft.com]
Sent: Friday, April 28, 2000 3:33 PM
To: NT Developers Interest List
Subject: [ntdev] RE: Page fault in filter driver after i/o completion of
subst itute IRP
Are you doing:
if (Irp->PendingReturned)
IoMarkIrpPending(Irp);
return (STATUS_SUCCESS);
There are only 2 possible return values from a completion routine:
STATUS_MORE_PROCESSING_REQUIRED or
STATUS_SUCCESS
Make sure you check this too.
Jamey
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Daniel Hickey
Sent: Friday, April 28, 2000 2:35 PM
To: NT Developers Interest List
Subject: [ntdev] Page fault in filter driver after i/o completion of
subst itute IRPIn an NT 4.0 filter driver I am intercepting every IRP_MJ_READ,
queueing it
and sending on down to the lower level driver a substitute IRP which I
created “to look very much like the original.” I do this so that
if I don’t
like the results I can do things till I get one I like and I can
pass on the
completion of the caller’s IRP when and how I wish.My problem is that when I get a (the first) completion of my
substitute IRP
I complete the original IRP with
IoCompleteRequest( originalIrp, IO_NO_INCREMENT);
and then return the status for my substitute IRP as
STATUS_ADDITIONAL_PROCESSING_REQUIRED
after exiting my code the system stops with a page fault in
ntoskrnl!PsReturnPoolQuotaI have removed all ExFreePool calls and added an additional stack location
as debug attempts with no changes. Anyone have any ideas??Daniel J. Hickey
xxxxx@bluekite.com
www.bluekite.com
Mobile: 714 875-9997
Office: 714 843-6051
Fax: 714 375-2737
You are currently subscribed to ntdev as: xxxxx@storagecraft.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)
You are currently subscribed to ntdev as: xxxxx@bluekite.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)