- Specifying Driver Load Order
- Using BootFlags to Promote a Driver’s StartType at Boot Depending on Boot Scenario
- Display Driver Initialization
- Update Display Drivers
- Common Problems Associated with Display Drivers
- Troubleshooting Display Drivers
- Update Display Drivers For Windows
- Update Drivers In Windows 10, 8, 7, Vista & XP
Specifying Driver Load Order
For most devices, the physical hierarchy of the devices on a computer determines the order in which Windows and the PnP manager load drivers. Windows and the PnP manager configure devices starting with the system root device, and then they configure the child devices of the root device (for example, a PCI adapter), the children of those devices, and so on. The PnP manager loads the drivers for each device as the device is configured, if the drivers were not previously loaded for another device.
Settings in the INF file can influence driver load order. This topic describes the relevant values that vendors should specify in the service-install-section referenced by a driver’s INF AddService directive. Specifically, this topic discusses the StartType, BootFlags, LoadOrderGroup, and Dependencies entries.
Drivers should follow these rules for specifying StartType:
A PnP driver should have a start type of SERVICE_DEMAND_START (0x3), specifying that the PnP manager can load the driver when the PnP manager finds a device that the driver services.
Driver for a device required to start the computer
If a device is required to start the computer, the drivers for the device should have a start type of SERVICE_BOOT_START (0x0).
Non-boot-start driver that detects device(s) that are not PnP-enumerable
For a device that is not PnP-enumerable, a driver reports the device to the PnP manager by calling IoReportDetectedDevice. Such a driver should have the start type SERVICE_SYSTEM_START (0x01) so Windows will load the driver during system initialization.
Only drivers that report non-PnP hardware should set this start type. If a driver services both PnP and non-PnP devices, it should set this start type.
Non-PnP driver that must be started by the service control manager
Such a driver should have the start type SERVICE_AUTO_START (0x02). PnP drivers must not set this start type.
A PnP driver should be written so that it can be loaded when Windows configures a device that the driver services. Conversely, a driver should be able to be unloaded any time that the PnP manager determines that there are no longer devices present that the driver services. The only driver load orderings that PnP drivers should depend on are as follows:
The drivers for a child device can depend on the fact that the drivers for the parent device are loaded.
A driver in the device stack can depend on the fact that any drivers below it are loaded.
For example, the function driver can be certain that any lower-filter drivers are loaded.
However, be aware that a driver in the device stack cannot depend on being loaded sequentially after a device’s lower drivers, because the driver might are loaded previously when another device was configured.
Filter drivers in a filter group cannot predict their load ordering. For example, if a device has three registered upper-filter drivers, those three drivers will all be loaded after the function driver but could be loaded in any order within their upper-filter group.
If a driver has an explicit load-order dependency on another driver, that dependency should be implemented through a parent/child relationship. A driver for a child device can depend on the drivers for the parent device being loaded before the child drivers are loaded.
To reinforce the importance of setting the correct StartType value, the following list describes how Windows and the PnP manager use the StartType entries in INF files:
On system startup, the operating system loader loads drivers of type SERVICE_BOOT_START before it transfers control to the kernel. These drivers are in memory when the kernel gets control.
Boot-start drivers can use INF LoadOrderGroup entries to order their loading. (Boot-start drivers are loaded before most of the devices are configured, so their load order cannot be determined by device hierarchy.) The operating system ignores INF Dependencies entries for boot-start drivers.
The PnP manager calls the DriverEntry routines of the SERVICE_BOOT_START drivers so the drivers can service the boot devices.
If a boot device has child devices, those devices are enumerated. The child devices are configured and started if their drivers are also boot-start drivers. If a device’s drivers are not all boot-start drivers, the PnP manager creates a device node (devnode) for the device but does not start the device yet.
After all the boot drivers have loaded and the boot devices are started, the PnP manager configures the rest of the PnP devices and loads their drivers.
The PnP manager walks the device tree and loads the drivers for the devnodes that are not yet started (that is, any nonstarted devnodes from the previous step). As each device starts, the PnP manager enumerates the children of the device, if any.
As it configures these devices, the PnP manager loads the drivers for the devices, regardless of the drivers’ StartType values (except when StartType is SERVICE_DISABLED) before proceeding to start the devices. Many of these drivers are SERVICE_DEMAND_START drivers.
The PnP manager ignores registry entries that were created as a result of INF Dependencies entries and LoadOrderGroup entries for drivers that it loads in this step. The load ordering is based on the physical device hierarchy.
At the end of this step, all the devices are configured, except devices that are not PnP-enumerable and the descendants of those devices. (The descendants might or might not be PnP-enumerable.)
The PnP manager loads drivers of StartType SERVICE_SYSTEM_START that are not yet loaded.
These drivers detect and report their non-PnP devices. The PnP manager processes registry entries that are the result of INF LoadOrderGroup entries for these drivers. It ignores registry entries that were created because of INF Dependencies entries for these drivers.
The service control manager loads drivers of StartType SERVICE_AUTO_START that are not yet loaded.
The service control manager processes the service database information with respect to the services’ DependOnGroup and DependOnServices. This information is from Dependencies entries in INF AddService entries. Be aware that the Dependencies information is only processed for non-PnP drivers because any necessary PnP drivers were loaded in an earlier step of system startup. The service control manager ignores INF LoadOrderGroup information.
See the Microsoft Windows SDK documentation for more information about the service control manager.
Using BootFlags to Promote a Driver’s StartType at Boot Depending on Boot Scenario
The operating system can promote a driver’s StartType to be a boot start driver depending on the BootFlags value specified in the driver’s INF. You can specify one or more (ORed) of the following numeric values in the INF file, expressed as a hexadecimal value:
- If a driver should be promoted to be a boot start driver on network boot, specify 0x1 (CM_SERVICE_NETWORK_BOOT_LOAD).
- If a driver should be promoted on booting from a VHD, specify 0x2 (CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD)
- If a driver should be promoted while booting from a USB disk, specify 0x4 (CM_SERVICE_USB_DISK_BOOT_LOAD).
- If a driver should be promoted while booting from SD storage, specify 0x8 (CM_SERVICE_SD_DISK_BOOT_LOAD)
- If a driver should be promoted while booting from a disk on a USB 3.0 controller, specify 0x10 (CM_SERVICE_USB3_DISK_BOOT_LOAD).
- If a driver should be promoted while booting with measured boot enabled, specify 0x20 (CM_SERVICE_MEASURED_BOOT_LOAD).
- If a driver should be promoted while booting with verifier boot enabled, specify 0x40 (CM_SERVICE_VERIFIER_BOOT_LOAD).
- If a driver should be promoted on WinPE boot, specify 0x80 (CM_SERVICE_WINPE_BOOT_LOAD).
For more information about promoting a driver’s StartType at boot, depending on the boot scenario, see INF AddService directive.
Display Driver Initialization
Display driver initialization is similar to graphics driver initialization, as described in Supporting Initialization and Termination Functions. This section provides initialization details that are specific to display drivers.
Video miniport and display driver initialization occur after the NT executive and the Win32 subsystem are loaded and initialized. The system loads the video miniport driver or drivers that are enabled in the registry, and then determines which video miniport driver and display driver pair to use. During this process, GDI opens all necessary display drivers, based on the information provided by Window Manager.
The basic display driver initialization procedure, in which the desktop is created, is shown in the following figure.
When GDI is called to create the first device context (DC) for the video hardware, GDI calls the display driver function DrvEnableDriver. Upon return, DrvEnableDriver provides GDI with a DRVENABLEDATA structure that holds both the driver’s graphics DDI version number and the entry points of all callable graphics DDI functions that are implemented by the driver (other than DrvEnableDriver).
GDI then calls the driver’s DrvEnablePDEV function to request a description of the driver’s physical device’s characteristics. In the call, GDI passes in a DEVMODEW structure, which identifies the mode that GDI wants to set. If GDI requests a mode that the display or underlying miniport driver does not support, then the display driver must fail this call.
The display driver represents a logical device controlled by GDI. As shown in the following figure, a single logical device can manage several physical devices, each characterized by type of hardware, logical address, and surfaces supported. The display driver allocates the memory to support the device it creates. A display driver may be called upon to manage more than one PDEV for the same physical device, although only one PDEV can be enabled at a time for a given physical device. Each PDEV is created in a separate GDI call to DrvEnablePDEV, and each call creates another PDEV that is used with a different surface.
Because a driver must support more than one PDEV, it should not use global variables.
GDI automatically enables DirectDraw after calling DrvEnableSurface. After DirectDraw is initialized, the driver can use DirectDraw’s heap manager to perform off-screen memory management. See DirectDraw and GDI for details.
The following figure illustrates logical versus physical devices.
When installation of the physical device is complete, GDI calls DrvCompletePDEV. This function provides the driver with a GDI-generated physical device handle to use when requesting GDI functions for the device.
In the final stage of initialization, a surface is created for the video hardware by a GDI call to DrvEnableSurface, which enables graphics output to the hardware. Depending on the device and the environment, the display driver enables a surface in one of two ways:
- The driver manages its own surface by calling the GDI function EngCreateDeviceSurface method is required for hardware that does not support a standard-format bitmap and is optional for hardware that does.
- GDI can manage the surface completely as an engine-managed surface if the hardware device has a surface organized as a standard-format bitmap. A driver can call EngModifySurface to convert the device-managed primary bitmap to one that is engine-managed. The driver can still hook any drawing operations.
Any existing GDI bitmap handle is a valid surface handle. A driver can call EngModifySurface to convert the device-managed primary bitmap to an engine-managed bitmap. If the surface is engine-managed, GDI can handle any or all drawing operations. If the surface is device-managed, at a minimum, the driver must handle DrvTextOut, DrvStrokePath, and DrvBitBlt.
GDI automatically enables DirectDraw after calling DrvEnableSurface. After DirectDraw is initialized, the driver can use DirectDraw’s heap manager to perform off-screen memory management. See DirectDraw and GDI for details.
A display driver must implement DrvNotify in order to receive notification events, particularly the DN_DRAWING_BEGIN event. GDI sends this event immediately before it begins drawing, so it can be used to determine when caches can be initialized.
See the Plug and Play section for more information about the boot process.
Update Display Drivers
A Display Driver is basically the software that enables communication between the operating system and the graphics architecture or the video graphics card and the display itself. Display Drivers are designed for wireless devices, handhelds, monitors, laptops, televisions, or automotive applications.
There are basically two types of Liquid Crystal Display (LCD) displays: the Super-twisted nematic (STN) display or Color STN (CSTN) and the Thin Film Transistor (TFT) Display. The STN or CSTN displays are primarily used with PDAs, Mobile phones, Game consoles, and word processors. TFT displays are primarily employed in LCD Television, laptops, handheld video games, PDAs, projection television, or navigation systems.
The STN is a monochrome passive LCD that requires less power and are less expensive than TFT LCD. This technology provides the informational screens of some of the mobile phone technology. CSTN is the color version of STN and uses red, blue, and green filters to display colors. It was originally developed by Sharp in the 1990s, but suffered slow response times and ghosting, so the technology was upgraded to active matrix displays. TFT LCD is one type of active matrix display that significantly improved image quality and addressability. New technology offer 100ms response times. High-Performance Addressing (HPA) is a newer passive matrix technology that offers even faster response times and contrast than CSTN. Samsung, Intel, AMD, and OKI semiconductor are all providers of the silicon solutions that power these devices. Each provider has a slightly different solution and requires a separate display driver to facilitate the communication between the device and the operating system.
Windows Display Driver Model (WDDM) is a new graphic driver for video cards drivers using Microsoft Windows versions. WDDM provides new functionality and better graphics performance than its predecessor Windows XP. Overall, it has a more reliable desktop experience, while supporting graphics and applications. Desktop Window Manager runs over Direct3D and has increased functionality due to WDDM. WDDM requires at least a Direct3D 9-capable video card, along with the display driver interfaces Direct3D 9Ex runtime to run legacy Direct3D applications.
Common Problems Associated with Display Drivers
1) Conflicts between two or more drivers caused by missing or busy resources
2) Missing drivers
3) Corrupted driver files
4) Poorly designed drivers that reduce a system’s stability and performance
4) Incompatibility with the operating system or hardware device
5) Problems in the Windows Registry
Troubleshooting Display Drivers
Display driver errors are typically very apparent to the user. The screen will go black during a video application, such as a highly intensive graphic video game. The video will stop momentarily and restart. The screen may turn from color to monochromatic or the screen will freeze.
With display drivers, it may sometimes be difficult to determine if the display driver is the problem or if the hardware is the problem. If the user experiences difficulty begin by reinstalling the existing display driver, upgrading to the most recent display driver, or revert back to a previous version. Also, check the system for incompatible display drivers.
With display drivers, typically, the user wants the most updated version to ensure maximum performance. However, ensure that the most recent version is compatible with the existing hardware. If the user has an older operating system or video graphics card, updating the display driver may exacerbate the problem. To run graphic-intensive programs, the user may have to upgrade the hardware along with the driver. However, always attempt to upgrade the display driver before a hardware replacement.
Update Display Drivers For Windows
Outdated or corrupt Display drivers can also cause problems. The drivers updater software program driver whiz, is fully compatible with Windows 10, Windows 8, Windows 7, Windows Vista, Windows XP. If problems persist please contact the support for further assistance.
Description | OS Compatibility | |
---|---|---|
Driver Whiz | Windows 10, 8, 8.1, 7, Vista & XP | DOWNLOAD |
Are You Looking For Any Other Driver? See popular device drivers listed below.
Update Drivers In Windows 10, 8, 7, Vista & XP
By clicking “Download Now”, I agree to Site Terms and Conditions and Privacy Policy.
Download Size: 7.2MB
Compatibility: Windows 10, 8, 7, Vista, XP
Requirements: 300 MHz Processor, 256 MB Ram, 22 MB HDD
Note: Individual drivers may be available on manufacturer websites at no charge. Driver Whiz is a driver update service that will scan your computer for suitable drivers and provide them in an easy, convenient method. Driver Whiz registration is $29.95 USD for 1-year subscription. Driver Whiz provides advanced scanning of your computer system. After a system scan has been performed all users will be provided the option to update out-of-date or missing drivers. Updating drivers is provided at a charge while scanning is provided at an unlimited basis.