From: Brian Catlin [MVP] on 10 Nov 2009 19:38 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" <DennisGinley(a)discussions.microsoft.com> wrote in message news:4B4A8F10-6AA4-477A-88CD-5B352295B6C4(a)microsoft.com... > 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
From: Dennis Ginley on 17 Nov 2009 00:36 I turned on debug spew and got the following: When I plug in and then remove a USB drive that has been seen before my driver installation, 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 plug in a "new" USB drive, i.e. one that had not been plugged in before the driver was installed, I see no spew at all. I added stubs for the QUERY_*) as Brian suggested, but since my driver is never entered for a new device, none of them are ever hit. It really seems like the presence of my lower filter is interfering with the PNP process. I'm attaching to the DiskDrive and CDROM classes in HKLM/System/CurrentControlSet/Control/Class/... Is there some other way to attach as a lower filter to USB removable devices? 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" <DennisGinley(a)discussions.microsoft.com> wrote in message > news:4B4A8F10-6AA4-477A-88CD-5B352295B6C4(a)microsoft.com... > > 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 > >
From: David Craig on 17 Nov 2009 00:47 Is this a new install of the OS on the target system? I have found that XP after about a year will not see a new USB stick even where other, previously seen ones, are currently working. Just Windows rot. "Dennis Ginley" <DennisGinley(a)discussions.microsoft.com> wrote in message news:AB798903-7257-482E-90B0-FF28246BCD10(a)microsoft.com... >I turned on debug spew and got the following: > > When I plug in and then remove a USB drive that has been seen before my > driver installation, > 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 plug in a "new" USB drive, i.e. one that had not been plugged in > before the driver was installed, I see no spew at all. > > I added stubs for the QUERY_*) as Brian suggested, but since my driver is > never entered for a new device, none of them are ever hit. > > It really seems like the presence of my lower filter is interfering with > the > PNP process. > > I'm attaching to the DiskDrive and CDROM classes in > HKLM/System/CurrentControlSet/Control/Class/... Is there some other way to > attach as a lower filter to USB removable devices? > > 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" <DennisGinley(a)discussions.microsoft.com> wrote in message >> news:4B4A8F10-6AA4-477A-88CD-5B352295B6C4(a)microsoft.com... >> > 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 >> >>
From: Dennis Ginley on 17 Nov 2009 00:53 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" <DennisGinley(a)discussions.microsoft.com> wrote in message > news:4B4A8F10-6AA4-477A-88CD-5B352295B6C4(a)microsoft.com... > > 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 > >
From: Dennis Ginley on 20 Nov 2009 14:54 I'd like to report that I figured it out, or at least I got it working. After almost three weeks of research and trying different things, I discovered that I needed to add the key "ErrorControl = 1" to HKLM\System\CurrentControlSet\Services\ntwiot5. I really don't know why that fixed the problem, but it did. This tool has existed for ten years as an upper filter without that key, but when I switched it to a lower filter it broke. With that key in place, all USB drives are recognized, and drivers are loaded for them. Thanks for the help and suggestions, Dennis "Dennis Ginley" wrote: > 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" <DennisGinley(a)discussions.microsoft.com> wrote in message > > news:4B4A8F10-6AA4-477A-88CD-5B352295B6C4(a)microsoft.com... > > > 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 > > > >
First
|
Prev
|
Pages: 1 2 Prev: Virtual LPT/Parallel Port Emulation Software,... Next: USBSER.SYS INT Endpoint? |