I enabled debug spew as Brian suggested.
When I insert and then remove a USB drive that had been installed in the
test system before my lower filter was installed, this is what I see:
NTWIOT5: *AddDevice() entered [pdo=028DA060].
NTWIOT5: Attached to device [hookDev=03172040] [targetDev=03037E00].
NTWIOT5: *DispatchPnp(IRP_MN_START_DEVICE) entered [03172040].
NTWIOT5: *PnpStartDevice() entered [03172040].
NTWIOT5: NtioInitializeHook() entered [03172040].
NTWIOT5: *DispatchPnp(IRP_MN_REMOVE_DEVICE) entered [03172040].
NTWIOT5: *PnpRemoveDevice() entered [03172040].
When I insert a "new" USB drive, i.e. one that had not been insterted into
the test system before installing the filter driver, there is no spew at all.
On the test box I see a message that the system is loading a driver, then
another that the driver load failed.
I also created stubs for the (QUERY_*) PNP enumeration IRPs, but none of
them were ever hit. It seems as if the presence of the lower filter driver is
interfering with the PNP process itself.
I'm attaching to the Disk Drive and CD_ROM classes in
HKLM/System/CurrentControlSet/Control/Class... Is there another place to
attach so I see USB drive discovery IRPs?
Thanks,
Dennis
"Brian Catlin [MVP]" wrote:
> From your description, it would appear that the PNP enumeration IRPs
> (QUERY_*) are not being processed correctly. Without seeing the code and
> the INF file, I cannot be more precise. Which OS are you testing on? Can
> you enable the PNP debug spew in the debugger?
>
> -Brian
>
> Brian Catlin, Azius Developer Training, 888-238-4050 x4
> Windows device driver training and consulting
> See www.azius.com for a list of classes
>
>
> "Dennis Ginley" <> wrote in message
> news:4B4A8F10-6AA4-477A-88CD-...
> > I'm a lower filter, sitting just below the storage class driver. My
> > AddDevice
> > is called for hard disks, CDs, and for USB keys that were inserted into
> > the
> > test box before my driver was installed, but not for "new" USB dirves. So
> > new
> > drives don't ever get added to my list of things to filter, and in fact
> > the
> > system doesn't even load drivers for them.
> >
> > So technically it's true that I'm not passing down any IRPs, because I'm
> > not
> > seeing them.
> >
> > Dennis
> >
> > Based upon the symptoms you're reporting, you're not passing down the PNP
> > enumeration IRPs properly. It isn't clear to me where you want to be
> > loaded. Are you trying to create a lower-level Function Filter Device
> > Object (FFDO) or a Bus Filter Device Object (BFDO)?
> >
> > -Brian
>
>