to fix regression CORE-16619 "Delay during bootup due to workqueue deadlocks" (verified)
to fix regression CORE-16511 "Regression: USB drives are not mounted anymore" (verified)
to fix regression CORE-16486 "doubled drive letters for USB drives" (verified)
to fix regression "got ioctl intended for the mount manager"-logspam (verified)
and hopefully to improve on CORE-15575 (this last part still needs verification)
This reverts the following commits:
0.4.14-dev-373-g
0917815efa
0.4.14-dev-296-g
324285f0b9
0.4.14-dev-294-g
887200703c
0.4.14-dev-172-g
6889cff5b5
0.4.14-dev-106-g
5ab1cfc553
0.4.14-dev-105-g
b68104dd87
Because our disk.sys doesn't do anything related to PnP
(compared to disk_new.sys), forcibly declare our partitions
to the MountMgr so that it can references them and assign
them a DOS drive letter on demand later on.
This is needed in order to avoid an infinite recursive loop between
disk!UpdateRemovableGeometry() and ntos!IoReadPartitionTable().
This does not happen with NT5+ disk_new.sys because it doesn't call
IoReadPartitionTable() in that situation.
In spite of what was implemented in our NT DDK sample, this is a legit operation.
This may have been turned legit starting NT5 (reminder, our implementation is
NT4 based...). So, in this situation, just return the information about the whole
disk (and not a random size) and also, mark everything with default values.
See disk_new for an example of how it works in NT5+.
CORE-14124