- Update drivers in Windows 10
- Before you begin
- Update the device driver
- Reinstall the device driver
- More help
- How to check device driver versions on Windows 10
- How to determine driver version using Device Manager
- How to determine driver version using PowerShell
- More Windows 10 resources
- Halo: MCC’s live service elements make it better, not worse
- Microsoft’s Surface Duo is not ‘failing up’
- Here’s what you can do if Windows 10 update KB5001330 is causing issues
- These are the best PC sticks when you’re on the move
- INF Validation Errors and Warnings
- Error Guidance
- Handling Errors
- Error Codes
- Syntax in the INF file (1100-1299)
- Universal INF (1300-1319)
- Windows Driver (1320-1329)
- Installation (2000-2999)
Update drivers in Windows 10
Before you begin
Driver updates for Windows 10, along with many devices, such as network adapters, monitors, printers, and video cards, are automatically downloaded and installed through Windows Update. You probably already have the most recent drivers, but if you’d like to manually update or reinstall a driver, here’s how:
Update the device driver
In the search box on the taskbar, enter device manager, then select Device Manager.
Select a category to see names of devices, then right-click (or press and hold) the one you’d like to update.
Select Search automatically for updated driver software.
Select Update Driver.
If Windows doesn’t find a new driver, you can try looking for one on the device manufacturer’s website and follow their instructions.
Reinstall the device driver
In the search box on the taskbar, enter device manager, then select Device Manager.
Right-click (or press and hold) the name of the device, and select Uninstall.
Restart your PC.
Windows will attempt to reinstall the driver.
More help
If you can’t see the desktop and instead see a blue, black, or blank screen, see Troubleshoot blue screen errors or Troubleshoot black or blank screen errors.
How to check device driver versions on Windows 10
On computers, a device driver is a package with instructions that allows (in this case) Windows 10 to communicate and control a particular piece of hardware (such as graphics card, printers, Bluetooth and network adapters).
Understanding the driver version currently installed on your computer can be useful information to determine if an update is needed, as manufacturers usually release driver updates multiple times a year to improve performance and stability, add new features, and fix issues.
In this Windows 10 guide, we walk you through the steps to check the version of a device driver using Device Manager and PowerShell.
How to determine driver version using Device Manager
To determine the driver version for a particular piece of hardware with Device Manager, use these steps:
- Open Start.
- Search for Device Manager and click the top result to open the experience.
- Expand the branch for the device that you want to check the driver version.
Right-click the device and select the Properties option.
Check the installed driver version of the device.
Once you complete these steps, you’ll know the current driver version, which you can check against the version number available on your manufacturer support website to determine if Windows 10 is using the most up-to-date release.
Alongside the driver version, using the «Driver» tab, you can also find out other useful information, such as the date when the current version of the driver was installed, and if the driver has been properly signed.
How to determine driver version using PowerShell
If you want to check the driver version for one or more devices, you can also use this PowerShell command:
- Open Start.
- Search for PowerShell, right-click the top result, and select Run as administrator.
Type the following command to list the drivers installed on your computer and press Enter:
Get-WmiObject Win32_PnPSignedDriver| select DeviceName, Manufacturer, DriverVersion
After completing the steps, the command will display all the device drivers currently installed on your system alphabetically with their manufacturer names and versions.
More Windows 10 resources
For more helpful articles, coverage, and answers to common questions about Windows 10, visit the following resources:
Halo: MCC’s live service elements make it better, not worse
Halo: The Master Chief Collection is more popular than ever, but some fans don’t agree with the live service approach 343 Industries has taken with it. Here’s why those elements are, at the end of the day, great for the game and for Halo overall.
Microsoft’s Surface Duo is not ‘failing up’
Microsoft announced this week that it was expanding Surface Duo availability to nine new commercial markets. While Surface Duo is undoubtedly a work in progress, this is not a sign of a disaster. It’s also doesn’t mean that Surface Duo is selling a ton either. Instead, the reason for the expansion is a lot more straightforward.
Here’s what you can do if Windows 10 update KB5001330 is causing issues
In this guide, we’ll show you the steps to get rid of the update KB5001330 to fix profile, gaming, and BSoD problems with the Windows 10 October 2020 Update and May 2020 Update.
These are the best PC sticks when you’re on the move
Instant computer — just add a screen. That’s the general idea behind the ultra-portable PC, but it can be hard to know which one you want. Relax, we have you covered!
INF Validation Errors and Warnings
This topic describes driver installation errors and warnings that can appear as a result of the automatic INF verification that Microsoft Visual Studio performs, or when you run the InfVerif tool.
Starting in Visual Studio 2015 with WDK 10, when you build your driver, the following INF file errors can appear in the Error List pane. If you are running InfVerif.exe from the command line, the tool displays these errors at the command prompt, or in the HTML version of the results.
Error Guidance
InfVerif follows a general rule that the lower the error number, the more severe the issue. Most error codes can be either a warning or an error depending on the arguments supplied to InfVerif.
Handling Errors
You must fix all errors in order to pass driver tests on the Hardware Dev Center dashboard. Errors are related to the following conditions:
- The INF parser is unable to successfully interpret your INF
- The INF parser is able to interpret the INF only by making a default value assumption (ambiguous syntax)
- The arguments to InfVerif indicate that a rule set should be applied to the INF (such as Universal)
While you don’t need to fix warnings before submitting your driver on the Dev Center, we recommend taking the time to understand the issue being reported. If you don’t understand a given warning, your INF might not always behave as you expect.
Warnings are typically related to:
- Syntax that may be incorrect, but has valid scenarios where it is appropriate
- Syntax that is valid for the given InfVerif parameters but is an error in other modes, such as Universal
Issues related to the Universal setting appear as errors if:
- In Visual Studio, you build your driver with target platform set to Universal or Mobile.
- You run InfVerif.exe from the command line and specify the /u flag.
Issues related to the Universal setting appear as warnings if:
- In Visual Studio, you build your driver with target platform set to Desktop.
- You run InfVerif.exe from the command line and do not specify the /u flag.
Error Codes
Error codes come in the following classifications:
Not all error codes are listed below, as many have self-evident meanings. Errors in the 1000-1099 range are considered self-evident, as they are basic syntax errors.
Syntax in the INF file (1100-1299)
While InfVerif failure means driver submission failure, driver installation may still succeed. This is because when you install a driver, if errors are present in the INF file, Windows also tries the default value for the setting. Windows does not fail driver installation due to errors in this range, but errors in this range indicate that the behavior may change depending on OS version or SKU. In cases where the driver installs successfully, these errors indicate that there are circumstances where the driver may not install properly.
Error Code | Description |
---|---|
1100: DriverStore Copyfile name mismatch | This error occurs when a file is copied or renamed from its original driver store name and location to a different name and location in the driver store. For example: The driver store maintains the original driver package directory structure. In the code above, the original location of DriverFile.sys is INF location\x64, but the CopyFiles directive places it in INF location\SubDirectory. The same error would be shown if the file was renamed as part of the copy. |
1203: Section not found | For example, the following INF syntax causes error 1203: This error is reported because the CopyFiles directive expects a section name (that specifies the list of files to copy). However, the CopyFiles directive can specify a file name. To differentiate between a section name and a file name, preface a file name with the @ token as shown here: |
1204: Provider cannot be Microsoft | The Provider field in the [Version] section cannot specify Microsoft. |
1205: Section [Driver_files] referenced from [Directive1] and [Directive2] directive | This warning is generated whenever two different directives point to the same section. Note that while in most cases this is, indeed, an error, in some cases 1205 is reported even though the condition is on purpose. |
1212: Cannot have both [DefaultInstall] and [Manufacturer] | A single INF cannot contain both [DefaultInstall] and [Manufacturer]. INFs authored with both should remove one of the two sections. |
1220: Cannot directly reference a section defined in an included INF | If your INF file references a DDInstall section in an included INF, you must use the Needs directive. Any other directive that references a section from an included INF causes error 1220. In this example, the install section of A.INF references an equivalent install section in B.INF. The Needs directive must reference an equivalent install section to process in the current install section. For example, a Needs directive in [InstallSectionA.Services] should point to the .Services of another install section. The Needs directive may also be used to include the behavior of another DDInstall section of the same INF. Using the Needs directive on other types of sections may result in undesired behavior. |
1221: Cannot modify services regkey, must use HKR | This error indicates that the INF file references a location in the services registry key, for example HKLM\SYSTEM\CurrentControlSet\ServicesService Name. When accessing the services key, you should instead use the relative root (HKR) to associate the registry value with the device or driver instance. When you use HKR, the registry value will not be present until the device is installed. |
1230: Missing file ‘xxxx’ under [SourceDisksFiles] section. | This indicates that a file was specified as part of the driver package, but the source location of the file relative to the INF was not specified in a [SourceDisksFiles] section. Note that this error frequently occurs if architecture-decorated versions of [SourceDisksFiles] are specified (such as [SourceDisksFiles.amd64], but not all architectures supported by the INF have a [SourceDisksFiles] section. |
1233: Missing directive required for signature | In the [Version] section, you must specify a CatalogFile directive (and associated catalog file) to receive a signature on a driver package. |
1235: String token not defined in [Strings] | A specified string token has no definition in the [Strings] section. For example, the INF file specifies %REG_DWORD% in an add-registry section specified by an AddReg directive, but there is no corresponding REG_DWORD = 0x00010001 in the [Strings] section. This error frequently occurs if your INF file specifies a registry value that contains an environment variable. For example: This line causes the INF parser to attempt to locate the token «SystemRoot» from the [Strings] section, rather than the intended behavior of storing the literal «%SystemRoot%» in the registry. To use the literal value %SystemRoot% rather than perform a string replacement, use the escape sequence %%. |
1285: Cannot specify [ClassInstall32] section for Microsoft-defined class. | As of Windows 10, IHV-supplied INFs are not allowed to use a [ClassInstall32] in an INF of any Microsoft-defined class. |
1296: Specified service not associated with hardware | Starting in Windows 10, version 1809, this has changed from a Warning to an Error. The .Services sections are required for each defined target OS. This is good practice and applies to all INFs and not just 1809. If you were previously not including this section because you had no services, and were relying on Inbox driver services, then you may need to create a .Services section that references the Inbox INF’s service using a NEEDS and INCLUDES statement. For example: An INF file would have the following .Services section for each OS target to resolve this error. For devices that do not require a function driver, the NULL driver can be specified as follows: Only use this in the case where the INF is installing a non-functional device to specify it does not need a driver. For example: A device that requires only a filter driver, and not a function driver would have two AddService directives: |
1297: Device driver does not install on any devices, use primitive driver if this is intended. | This indicates that the INF file is a device driver, but it is not being used as a device driver. This may cause issues in how the driver is treated by the driver store. If this is unintentional, check your INF to make sure that hardware IDs are correctly specified. If the driver is not intended to install on devices, convert it to a primitive driver. For more info, see Converting from a device driver INF. |
Universal INF (1300-1319)
Your driver INF file is universal if you do not get any errors or warnings with error number in the range 1300-1319.
The following errors and warnings are related to INF configurability:
Error/Warning Code | Description |
---|---|
1300: Found legacyXxx | You will see this error if you use deprecated sections or directives such as LogConfig or DDInstall.CoInstallers. |
1301: Found legacyXxxoperationXxx | You will see this error if you use deprecated sections or directives such as LogConfig or DDInstall.CoInstallers. |
1302: Found legacyXxxoperation forXxx | This error occurs when the operation affects something external to the driver package, like deleting a service or deleting a file. |
1303: Found legacy operation defining co-installers | Error 1303 indicates that an AddReg operation is specifying a coinstaller. For example: |
1304: Found legacy operation using non-relative key | Error 1304 indicates that a registry operation uses a registry root other than HKR. |
1305: Found legacy operation using appendable multi-sz value | Error 1305 indicates that the INF deletes a value from a REG_MULTI_SZ or appends a value to an existing REG_MULTI_SZ. |
1306: Found legacy operation with non-system target path | Error 1306 indicates that a file copy specifies a target that is not under %SystemRoot%. |
1310-1312: Incorrect section extension for a Needs directive | Needs directives effectively do a copy/paste of the needed section into the referencing section. As a baseline validation, InfVerif compares the extension of the section. This means that a [DDInstall.Services] can only use the Needs directive on other [DDInstall.Services] sections. |
1313-1314: Missing includes directive | In each section that uses a Needs directive, there must be a corresponding Includes directive to reference the INF that contains the target section. Previously the Needs directive would be valid if the Include directive was in another INF section. |
133x: Functional errors | Multiple registry sections write to a single global key. For example, different sections could have a service set to different service configurations, a global registry key set to different data values, or a destination file pointing to different source files. |
Windows Driver (1320-1329)
Your driver INF file complies with Windows Driver requirements if you do not get any errors or warnings with error number in the range 132x. These requirements are described in detail in the Driver Isolation Requirements documentation.
The following errors and warnings are related to Windows Driver requirements:
Error/Warning Code | Description |
---|---|
1320: Registry root Xxx is not isolated to HKR | Error 1320 indicates that a registry key operation is not compliant with registry requirements defined in Reading and Writing State. |
1321: Registry root Xxx of value Xxx is not isolated to HKR | Error 1321 indicates that a registry value operation is not compliant with registry requirements defined in Reading and Writing State. |
1322: Destination file path Xxx for file Xxx is not isolated to DIRID 13 | Error 1322 indicates that a file is copied to a an invalid destination, per requirements defined in Run from Driver Store. |
1323: Service registry key Xxx must be under the Parameters subkey | Error 1323 indicates that a service registry value is not set as an HKR under the parameters subkey, per requirements defined in Service Registry State. |
1324: [Version] section should specify PnpLockdown=1 | Error 1324 indicates that PnpLockdown was not specified in the version section. This specification causes PNP to add additional security to binary files in the driver package to prevent tampering and should always be specified in driver packages. |
Installation (2000-2999)
Issues in the 2000-2999 range appear as warnings. Possible values include the following.
Error Code | Description |
---|---|
2083: Section not referenced or used | This warning indicates that the INF file provides a section that is not referenced. When the driver is installed, the contents of the section referenced in the warning are not evaluated. |
2222: Legacy directive will be ignored. | This warning indicates that the INF specifies a deprecated directive. When the driver is installed, the directive referencing the section is not evaluated. For example, the INF LogConfig Directive directive is no longer supported, so the following section results in this warning. For information about which INF directives are deprecated, see INF Directives. |
2223: Section should have an architecture decoration | This warning indicates that the INF file contains an INF Manufacturer Section that specifies a model section with no architecture decoration. For example, the following INF syntax would result in warning 2223: When you install the driver, the preceding INF syntax defaults to x86. Instead, declare all supported architectures and provide a corresponding install section for each: |