Universal Drivers For Windows 10

Universal Printer Driver is forcefully installing on. Windows 10 wants to install a Universal. Version of this driver Windows 10 fails to. In Windows 10, the Bluetooth transport driver interface for all devices is converged and uses the Universal Windows driver model.

Getting Started with Universal Windows drivers • • 3 minutes to read • Contributors • • • • • In this article Universal Windows drivers enable developers to create a single driver package that runs across multiple different device types, from embedded systems to tablets and desktop PCs. A Universal Windows driver is a driver package that contains an INF file and binaries that will install and run on Universal Windows Platform (UWP) based editions of Windows 10, such as Windows 10 for desktop editions (Home, Pro, and Enterprise), Windows 10 S, Windows 10 Mobile, Windows 10 IoT Core, Windows Server 2016, as well as other Windows 10 editions that share a common set of interfaces. A Universal INF file is an INF file that only uses the that is supported on. Any binaries referenced by the Universal INF file must use only device driver interfaces (DDI) that are included in. These DDIs are marked as Universal on the corresponding documentation reference pages. The driver binary can use, or the Windows Driver Model (WDM). Other binaries contained in your Universal Windows driver must pass the.

Design Principles When you write a universal driver package, there are four design principles to consider: • Declarative: Use directives in the INF file for installation operations and not extension points such as co-installers, RegisterDlls, etc. • Componentized: System and/or OEM-specific customizations are in an driver package separate from the base driver package, facilitating independent updates of different components owned by different organizations. • Hardware Support Apps (HSA): Use to associate a hardware-specific UWP (Universal Windows Platform) application with your driver. The resulting app can be delivered and serviced from the Microsoft Store. • Universal API compliance: Binaries in the universal driver package only call APIs and DDIs that are included in the OneCore subset. INF files use only universal INF syntax. In the documentation, we use the acronym DCHU to refer to the above principles.

Universal Drivers For Windows 10

Below, you'll find guidance on how to make your driver package DCHU-compliant. Also check out, which describes how the applies the DCHU design principles. Requirements The following are required when writing a universal driver package: • Create a universal INF file for your driver: • Review the list of INF sections and directives that are valid in universal driver packages in.

• Use the tool to verify that your driver package's INF file is universal. • Use the ApiValidator tool to verify that the APIs your binaries call are valid for a universal driver package. Best Practices Use the following best practices: • If you are using the WDK with Visual Studio, set the Target Platform value in the driver project properties to Universal. This will automatically pull in the correct libraries, as well as running the Universal INF validation and APIValidator as a part of build. To do this: • Open the driver project properties. • Select Driver Settings. • Use the drop-down menu to set Target Platform to Universal.

• If your INF performs any custom setup actions that depend on the target platform, consider separating them out into an extension INF. You can update an extension INF independently from the base driver package to improve robustness and servicing. • If you would like to provide an application that works with your device, please provide a UWP app. For details, see. In Windows 10, version 1703, the OEM needs to pre-load such an app using. Alternatively, users can manually download the app from the Microsoft Store.

• In the, set the destination directories to to make the driver run from the Driver Store. Amd Ati Radeon X1300 Graphics Driver Windows 10 more. This will not work for some devices.

• Submit your universal driver package for certification in the Windows Hardware Compatibility Program. See these topics for more details: • • • •.

Universal Windows Drivers for Audio • • 9 minutes to read • Contributors • In this article In Windows 10 you can write a universal audio driver that will work across many types of hardware. This topics discusses the benefits of this approach as well as the differences between different platforms. In addition to the Universal Windows drivers for audio, Windows continues to support previous audio driver technologies, such as WDM. Getting Started with Universal Windows drivers for Audio IHVs can develop a Universal Windows driver that works on all devices (desktops, laptops, tablets, phones). This can reduces development time and cost for initial development and later code maintenance. These tools are available to develop Universal Windows driver support: • Visual Studio 2015 Support: There is a driver setting to set “Target Platform” equal to “Universal”.

For more information about setting up the driver development environment, see. • APIValidator Tool: You can use the ApiValidator.exe tool to verify that the APIs that your driver calls are valid for a Universal Windows driver. This tool is part of the Windows Driver Kit (WDK) for Windows 10, and runs automatically if you are using Visual Studio 2015. For more information, see.

• Updated DDI reference documentation: The DDI reference documentation is being updated to indicate which DDIs are supported by Universal Windows drivers. For more information, see. Create a Universal Audio Driver For step-by-step guidance, see. Here is a summary of the steps: • Load the universal audio sysvad sample to use as starting point for your universal audio driver. Alternatively, start with the empty WDM driver template and add in code from the universal sysvad sample as needed for your audio driver.

• In the project properties, set Target Platform to 'Universal'. • Create an installation package: If your target is device running Windows 10 for desktop editions (Home, Pro, Enterprise, and Education), use a configurable INF file. If your target is device running Windows 10 Mobile, use PkgGen to generate an.spkg file. • Build, install, deploy, and debug the driver for Windows 10 for desktop editions or Windows 10 Mobile.

Sample Code Sysvad and SwapAPO have been converted to be Universal Windows driver samples. For more information, see. Available Programming Interfaces for Universal Windows drivers for Audio Starting with Windows 10, the driver programming interfaces are part of OneCoreUAP-based editions of Windows.

By using that common set, you can write a Universal Windows driver. Those drivers will run on both Windows 10 for desktop editions and Windows 10 Mobile, and other Windows 10 versions.

The following DDIs to are available when working with universal audio drivers. • • • • • • • Convert an Existing Audio Driver to a Universal Windows driver Follow this process to convert an existing audio driver to a Universal Windows driver. • Determine whether your existing driver calls will run on OneCoreUAP Windows. Check the requirements section of the reference pages. For more information see. • Recompile your driver as a Universal Windows driver.

In the project properties, set Target Platform to 'Universal'. • Use the ApiValidator.exe tool to verify that the DDIs that your driver calls are valid for a Universal Windows driver. This tool is part of the Windows Driver Kit (WDK) for Windows 10, and runs automatically if you are using Visual Studio 2015. For more information, see. • If the driver calls interfaces that are not part of OneCoreUAP, compiler displays errors.

• Replace those calls with alternate calls, or create a code workaround, or write a new driver. Creating a componentized audio driver installation Overview To create a smoother and more reliable install experience and to better support component servicing, divide the driver installation process into the following components.

• DSP (if present) and Codec • APO • OEM Customizations Optionally, separate INF files can be used for the DSP and Codec. This diagram summarizes a componentized audio installation.

A separate extension INF file is used for each software component. For more information, see. An extension INF file must be a universal INF file. For more information, see. For information about adding software using INF files, see. Submitting componentized INF files APO INF packages must be submitted to the Hardware Dev Center separately from the base driver package. For more information about creating packages, see.

SYSVAD componentized INF files To see an example of componentized INF files examine the, on Github. File name Description ComponentizedAudioSample.inf The base componentized sample audio INF file.

ComponentizedAudioSampleExtension.inf The extension driver for the sysvad base with additional OEM customizations. ComponentizedApoSample.inf An APO sample extension INF file. The traditional INF files continue to be available in the SYSVAD sample. File name Description tabletaudiosample.inf A desktop monolitic INF file that contains all of the information needed to install the driver.

Phoneaudiosample.inf A phone monolitic INF file that contains all of the information needed to install the driver. APO vendor specific tuning parameters and feature configuration All APO vendor system specific settings, parameters, and tuning values must be installed via the audio OEM extension INF package. In many cases, this can be performed in a simple manner with the AddReg directive. In more complex cases, a tuning file can be used. Base driver packages must not depend on these customizations in order to function (although of course functionality may be reduced). Programmatically launching UWP Hardware Support Apps To programmatically launch a UWP Hardware Support App, based on a driver event (for example, when a new audio device is connected), use the Windows Shell APIs.

The Windows 10 Shell APIs support a method for launching UWP UI based on resource activation, or directly via. You can find more details on automated launching for UWP applications in.

APO and device driver vendor use of the AudioModules API The Audio Modules API/DDI is designed to standardize the communication transport (but not the protocol) for commands passed between a UWP application or user-mode service to a kernel driver module or DSP processing block. Audio Modules requires a driver implementing the correct DDI to support module enumeration and communication. The commands are passed as binary and interpretation/definition is left up to the creator. Audio Modules is not currently designed to facilitate direct communication between a UWP app and a SW APO running in the audio engine. For more information about audio modules, see and. APO HWID strings construction APO Hardware IDs incorporate both standard information and vendor-defined strings. They are constructed as follows: APO VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4) &REV_r(4) APO VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4) APO VEN_v(4)&AID_a(4) Where: • v(4) is the 4-character identifier for the APO device vendor.

This will be managed by Microsoft. • a(4) is the 4-character identifier for the APO, defined by the APO vendor.

• n(4) is the 4-character PCI SIG-assigned identifier for the vendor of the subsystem for the parent device. This is typically the OEM identifier. • s(4) is the 4-character vendor-defined subsystem identifier for the parent device. This is typically the OEM product identifier. Plug and Play INF version and date evaluation for driver update The Windows Plug and Play system evaluates the date and the driver version to determine which drive to install when multiple drivers exist.

For more information, see. To allow the latest driver to be used, be sure and update the date and version, for each new version of the driver.

APO driver registry key For third party-defined audio driver/APO registry keys, use the HKR with the exception of HKLM System CurrentControlSet. Use a Windows Service to facilitate UWP APO communication A Windows Service is not strictly required for management of user-mode components like APOs, however, if your design includes an RPC server to facilitate UWP APO communication, we recommend implementing that functionality in a Windows Service that then controls the APO running in the audio engine. Building the Sysvad Universal Audio Sample for Windows 10 Desktop Complete the following steps to build the sysvad sample for Windows 10 desktop. • Locate the desktop inf file (tabletaudiosample.inf) and set the manufacturer name to a value such as 'Contoso' • In Solution Explorer, right-click Solution 'sysvad', and choose Configuration Manager. If you are deploying to a 64 bit version of Windows, set the target platform to x64. Make sure that the configuration and platform settings are the same for all of the projects.

• Build the all of the projects in the sysvad solution. • Locate the output directory for the build from the build.

For example it could be located in a directory like this: C: Program Files (x86) Windows Kits 10 src audio sysvad x64 Debug package • Navigate to the Tools folder in your WDK installation and locate the PnpUtil tool. For example, look in the following folder: C: Program Files (x86) Windows Kits 10 Tools x64 PnpUtil.exe. • Copy the following files to the system that you want to install the sysvad driver: TabletAudioSample.sys The driver file. Tabletaudiosample.inf An information (INF) file that contains information needed to install the driver. Sysvad.cat The catalog file. SwapAPO.dll A sample driver extension for a UI to manage APOs.

PropPageExt.dll A sample driver extension for a property page. KeywordDetectorAdapter.dll A sample keyword detector. Install and test the driver Follow these steps to install the driver using the PnpUtil on the target system. • Open and Administrator command prompt and type the following in the directory that you copied the driver files to. Pnputil -i -a tabletaudiosample.inf • The sysvad driver install should complete.

If there are any errors you can examine this file for additional information:%windir% inf setupapi.dev.log • In Device Manager, on the View menu, choose Devices by type. In the device tree, locate Microsoft Virtual Audio Device (WDM) - Sysvad Sample. This is typically under the Sound, video and game controllers node. • On the target computer, open Control Panel and navigate to Hardware and Sound >Manage audio devices. In the Sound dialog box, select the speaker icon labeled as Microsoft Virtual Audio Device (WDM) - Sysvad Sample, then click Set Default, but do not click OK.

This will keep the Sound dialog box open. • Locate an MP3 or other audio file on the target computer and double-click to play it. Then in the Sound dialog box, verify that there is activity in the volume level indicator associated with the Microsoft Virtual Audio Device (WDM) - Sysvad Sample driver.

Building the Sysvad Universal Audio Sample for Windows 10 Mobile Complete the following steps to build the sysvad sample for Windows 10 Mobile. • Locate the Mobile inf file (phoneaudiosample.inf) and set the manufacturer name to a value such as 'Contoso' • Build the following projects in the sysvad solution: • EndPointsCommon • PhoneAudioSample • Locate the output directory for the build from the. For example with a default location of Visual Studio in could be located in a directory like this: C: Program Files (x86) Windows Kits 10 src audio sysvad x64 Debug package • Follow the guidance in to create a package that contains the driver files for a mobile image.

• To install a mobile driver package (.spkg file), you will need to combine packages into a mobile OS image. Use ImgGen to add the.spkg driver package to a full flash update (FFU) image that can then be flashed to a mobile device. It may be necessary to remove other audio drivers that exist in the mobile image to allow for testing of the sysvad virtual audio driver. • After the OS image contains the driver package is running, play a sound clip and validate that the sysvad phone audio sample is functional.

You can establish a kernel debugger connection to monitor the sysvad virtual driver on a mobile device.