Step 3: The Driver for the Device is Installed
After Windows has selected the best driver for the new device, it saves information about the device and driver in the following way:
Multiple devices of the same model and version can be connected to the computer. Each device connection is known as a device instance.
Windows represents each device instance as a unique device node (devnode). A devnode contains information about the device, such as whether the device was started and which drivers have registered for notification on the device.
Windows represents a driver for the device as a driver node. A driver node is based on the information from a matching device entry within the INF Models section of the driver package's INF file. A driver node includes all the software support for a device, such as any services, device-specific co-installers, and registry entries.
As soon as the device and driver are instantiated, Windows installs the driver by following these steps:
Copies the driver binaries and other associated files to locations on the hard disk as specified by the INF CopyFiles directive.
Performs any device-instance related configuration, such as registry key writes.
Windows determines the device setup class from the Class and ClassGuid entries in the INF Version section of the driver package's INF file. To optimize device installation, devices that are set up and configured in the same manner are grouped into the same device setup class.
As soon as the driver files are copied, Windows transfers control to the Plug and Play (PnP) manager. The PnP manager loads the drivers and starts the device.
The PnP manager loads the appropriate function driver and any optional filter drivers for the device.
The PnP manager calls the DriverEntry routine for any required driver that is not yet loaded. The PnP manager then calls the AddDevice routine for each driver, starting with lower-filter drivers, then the function driver, and, finally, any upper filter drivers. The PnP manager assigns resources to the device, if required, and sends an IRP_MN_START_DEVICE to the device's drivers.
As soon as this step is complete, the device is installed and ready to be used.