Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results
The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
Take the following example, who create the PDOs:
1. 0xffffe20b12e65b20
2. 0xffffe20b12e66b20
3. 0xffffe20b12e67b20
4. 0xffffe20b12e68b20
By volmgr? But I never found how it responds the BusRelations. Many thanks!!!
1: kd> !devnode 0 1 volmgr Dumping IopRootDeviceNode (= 0xffffe20b127ac9b0) DevNode 0xffffe20b1278a9b0 for PDO 0xffffe20b126b4d80 InstancePath is "ROOT\volmgr\0000" ServiceName is "volmgr" State = DeviceNodeStarted (0x308) Previous State = DeviceNodeEnumerateCompletion (0x30d) DevNode 0xffffe20b12e6aad0 for PDO 0xffffe20b12e65b20 // 1 InstancePath is "STORAGE\Volume\{0f38df59-eeb8-11ea-bfcf-806e6f6e6963}#0000000000100000" ServiceName is "volume" TargetDeviceNotify List - f 0xffffce09bff437d0 b 0xffffce09bfb04d10 State = DeviceNodeStarted (0x308) Previous State = DeviceNodeStartPostWork (0x307) DevNode 0xffffe20b12e6ead0 for PDO 0xffffe20b12e66b20 // 2 InstancePath is "STORAGE\Volume\{0f38df59-eeb8-11ea-bfcf-806e6f6e6963}#000000001F400000" ServiceName is "volume" TargetDeviceNotify List - f 0xffffce09bff434c0 b 0xffffce09bfb04840 State = DeviceNodeStarted (0x308) Previous State = DeviceNodeStartPostWork (0x307) DevNode 0xffffe20b12e6fad0 for PDO 0xffffe20b12e67b20 // 3 InstancePath is "STORAGE\Volume\{0f38df59-eeb8-11ea-bfcf-806e6f6e6963}#0000000025700000" ServiceName is "volume" State = DeviceNodeStarted (0x308) Previous State = DeviceNodeStartPostWork (0x307) DevNode 0xffffe20b12e70ad0 for PDO 0xffffe20b12e68b20 // 4 InstancePath is "STORAGE\Volume\{0f38df59-eeb8-11ea-bfcf-806e6f6e6963}#0000000026700000" ServiceName is "volume" TargetDeviceNotify List - f 0xffffce09bff43d80 b 0xffffce09bfb048b0 State = DeviceNodeStarted (0x308) Previous State = DeviceNodeStartPostWork (0x307)
Upcoming OSR Seminars | ||
---|---|---|
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead! | ||
Writing WDF Drivers | 7 Dec 2020 | LIVE ONLINE |
Internals & Software Drivers | 25 Jan 2021 | LIVE ONLINE |
Developing Minifilters | 8 March 2021 | LIVE ONLINE |
Comments
These PDOs are created by Volmgr.
Then how Volmgr return these PDOs to Pnp Manager ? By means of BusRelations ? It seems that Volmgr only process the cases of PowerRelations and TargetDeviceRelation, and ignored the other cases.
That doesn't sound right to me. How did you determine that it doesn't support BusRelations?
-scott
OSR
This is my commented volmgr!VmPnp, from offset at volmgr!VmPnp+0xdd, it is the logic volmgr process the IRP_MN_QUERY_DEVICE_RELATIONS, there is no logic for BusRelations.
What version of Windows? On Win10 2004 I see this path to deal with BusRelations:
The code then goes on to fill in the allocation, reference the device objects, and pass the IRP down the stack. Here's the call stack leading to this point in case it helps:
-scott
OSR
the Information from resource tables of the volmgr is blank, the Information from resource tables of nt is (LTSC)
and I break VmPnp as follow
got the following call stack (same as yours)
It's a LTSC Windows
by
got the same call stack
sorry for my careless. I found it.