Freigeben über


Why does /FASTDETECT exist and how did it get its name?

/FASTDETECT is a command line flag in a boot.ini entry. It started showing
up in Windows 2000 (W2K) by default. Why does this flag exist? Previous to W2K
ntdetect.com performed a tremendous amount of device detection since PnP
did not exist previous to W2K. One type of device that was
detected by ntdetect.com was a serial attached mouse. When a serial mouse was
detected, the serial driver would not load on the serial port, rather the serial
mouse driver (sermouse.sys) would load on the serial port and control the
hardware directly.

Now, along comes W2K which is a PnP enabled OS. In W2K, the
serial mouse driver no longer controls the hardware directly, but communicates
with the serial port driver and uses PIRPs instead of direct hw access and
interrupts. This made the serial mouse detected by ntdetect.com useless
since the serial mouse needs to be enumerated as a child of the serial port (by
serenum.sys).

Since device detection on the serial takes time and now this detection
is duplicated (making boot time longer), it made sense to remove the detection
from ntdetect.com. It was not as simple as removing detection code from ntdetect.com
because the machine could be a dual boot machine which boots both NT4 and Win2K
and NT4 still relied on ntdetect.com for the serial mouse detection. The answer
was to selectively not do the serial mouse (and some other specific device)
detection it) based on the presence of a flag. This flag is /FASTDETECT.
So by adding /FASTDETECT to the boot.ini entry for W2K and later OS's, the boot
time is a bit faster (and every bit counts!).

The last problem we faced is what to name the flag. It had to be a name that
did not beg to be deleted when someone editted boot.ini; it had to be a name that
said "Keep me! I do great things!" We settled on /FASTDETECT since everyone
wants their machine to boot faster and all the other proposals were too wild to
see the light of day ;).