Actually I meant to backup the current stack location and have the driver
below you use your stack location. I think this method of reusing stack
locations is outlined in the filespy example in the IFS kit, or is it the
filemon example.
Pete
Peter Scott
xxxxx@KernelDrivers.com
http://www.KernelDrivers.com
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of carsten schulz
Sent: Wednesday, February 06, 2002 4:17 PM
To: NT Developers Interest List
Subject: [ntdev] RE: USB Filter driver: NO_MORE_IRP_STACK_LOCATIONS with
IRP_MN_QUERY_CAPABILITIES
Do you mean by invoking the underlying dispatch function by myself?
I have tried something like this, too. In my DispatchPnp function I am
calling directly in some of the underlying drivers, like this:
- Pdo->DriverObject->MajorFunction[IRP_MJ_PNP](Pdo, Irp)
=> Results in the same DriverVerifier error:
Caller has completed successful IRP_MJ_PNP instead
of passing it down
- LowerDO->DriverObject->MajorFunction[IRP_MJ_PNP](LowerDO, Irp)
=> Results in the NO_MORE_IRP_STACK_LOCATIONS BSOD.
That’s the same as when using:
IoSkipCurrentIrpStackLocation(Irp);
IoCallDriver(LowerDO);
Best,
Carsten
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Pete Scott
Sent: Mittwoch, 6. Februar 2002 21:56
To: NT Developers Interest List
Subject: [ntdev] RE: USB Filter driver:
NO_MORE_IRP_STACK_LOCATIONS with IRP_MN_QUERY_CAPABILITIES
You could try to re-use your current stack location.
Pete
Peter Scott
xxxxx@KernelDrivers.com
http://www.KernelDrivers.com
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of carsten schulz
Sent: Wednesday, February 06, 2002 3:46 PM
To: NT Developers Interest List
Subject: [ntdev] USB Filter driver: NO_MORE_IRP_STACK_LOCATIONS with
IRP_MN_QUERY_CAPABILITIES
Hi all,
I have written a lower filter driver for the Generic Parent Driver
“usbccgp.sys”. In my DispatchPnP routine I sometimes get an
IRP_MN_QUERY_CAPABILITIES that don’t have enough stack locations
(Irp->CurrentLocation == 1). Thus, passing this IRP down
results in the
wonderful NO_MORE_IRP_STACK_LOCATIONS blue screen of death.
To workaround this problem I am using a “RepeatRequest” function (like
the
one from Walt Oney’s MULFUNC sample) to allocate a replacement IRP and
send
that down instead of the original one.
This works fine without any BSOD, but DriverVerifier still gives me a
message like this when my repeater completion routine returns:
**************************************************************
*********
* THIS VALIDATION BUG IS FATAL AND WILL CAUSE THE VERIFIER TO HALT *
* WINDOWS (BUGCHECK) WHEN THE MACHINE IS NOT UNDER A KERNEL
DEBUGGER! *
**************************************************************
*********
WDM DRIVER ERROR: [filter.sys @ 0xFADFDDAE] Caller has completed
successful
IRP_MJ_PNP instead of passing it down (Irp = 9FB83F48 ).
IRP_MJ_PNP.IRP_MN_QUERY_CAPABILITIES
Does anybody know, why I am getting this “too small”
IRP_MN_QUERY_CAPABILITIES? And, is there a better way to handle such
IRPs,
so that DriverVerifier won’t pop up anymore?
Thanks for any help in advance.
Best,
Carsten
You are currently subscribed to ntdev as: xxxxx@KernelDrivers.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: xxxxx@cityweb.de
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: xxxxx@KernelDrivers.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.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