ilko_t, on Nov 9 2009, 06:47 PM, said:
Can you figure out why exactly the level changes in some occasions? Which one is the missing "hop"? How an internal card reader for example would move one hop up, getting level 6 for example?
I'm a human only and the crystal ball is empty
Well maybe another kernel, hal or ACPI configuration does interfere too?
Device tree is a good explanation in general: does match in most cases.
Of coure there exeptions.
Given removable USB Stick direct attached to USB port: ParentIdPrefix 7&*&0
Driver stack:
1 ntoskrnl.exe, hal.dll
2&daba3ff&0 acpi.sys
3 pci.sys - no ParentIdPrefix
4&11cdd0bd&0 usbehci.sys
5&38c8e674&0 usbhub.sys
6 usbstor.sys - no ParentIdPrefix
7&776bc3a&1 disk.sys
Next remove USB Stick, attach a USB hub. And insert USB Stick to the USB hub.
Device tree is one step deeper: I expected ParentIdPrefix 8&*&0
However ParentIdPrefix stays at 7&*&0.
A double usbhub.sys dosn't matter, driver is loaded and used once.
I recogiced strange behaviour using a USB controller without a SerialNumber.
This is a fixed USB hard disk. MountedDevies does NOT use ParentIdPrefix.
Windows PNP the hard disk for each USB port.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_05e3&Pid_0702\5&38c8e674&0&2]
"Service"="USBSTOR"
"ParentIdPrefix"="6&27caf906&2"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_05e3&Pid_0702\5&38c8e674&0&5]
"Service"="USBSTOR"
"ParentIdPrefix"="6&28d260fd&2"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{53f56307-b6bf-11d0-94f2-00a0c91efb8b}\##?#USBSTOR#Disk&Ven_SAMSUNG&Prod_HM160HC&Rev_0811#6&27caf906&2#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}]
"DeviceInstance"="USBSTOR\\Disk&Ven_SAMSUNG&Prod_HM160HC&Rev_0811\\6&27caf906&2"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{53f56307-b6bf-11d0-94f2-00a0c91efb8b}\##?#USBSTOR#Disk&Ven_SAMSUNG&Prod_HM160HC&Rev_0811#6&28d260fd&2#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}]
"DeviceInstance"="USBSTOR\\Disk&Ven_SAMSUNG&Prod_HM160HC&Rev_0811\\6&28d260fd&2"
Recogince the main difference:
USB hard disk, ParentIdPrefix 6&28d260fd&2 usbstor.sys. (6th driver in stack)
USB stick, ParentIdPrefix 7&776bc3a&1 disk.sys (7th driver in stack)
Idea:
Drive SerialNumber and relating windwos configuration (GlobalDisableSerNumGen, IgnoreHWSerNum*) may be importand.
A USB stick with a serial number get ParentIdPrefix 7&*&0 at the same USB port.
I don't pocess a USB stick without a serial number and can't test this.
Finally: yes, the driver stack does set ParentIdPrefix N&*&*.
Windows may connect ParentIdPrefix to different drivers. True reason is unkown.
Added, more ideas:
A addional (non windows default) driver in stack may cause ParentIdPrefix 8&*&*.
A default windows installation set ParentIdPrefix 7&*&0.
A end user install some addional USB driver into driver stack: ParentIdPrefix is changed to 8&*&*.
This post has been edited by cdob: 11 November 2009 - 04:42 PM