本文内容
在Windows10可以编撰可跨多种硬件类型工作的通用音频驱动程序。本主题讨论此方式的优点以及平台之间的差别。不仅适用于音频的通用Windows驱动程序外,Windows还继续支持先前的音频驱动程序技术,比如WDM。
使用适用于音频的通用Windows驱动程序入门
IHV可以开发适用于台式机、笔记本笔记本、平板笔记本、手机)的所有设备(通用Windows驱动程序。这可以减轻初始开发和后续代码维护的开发时间和成本。
这种工具可用于开发通用Windows驱动程序:
创建通用音频驱动程序
有关分步手册,请参阅使用通用Windows驱动程序入门。下边是这种步骤的摘要:
加载通用音频sysvad示例以用作通用音频驱动程序的起点。或则,从空的WDM驱动程序模板开始,并按照须要为音频驱动程序添加通用sysvad示例中的代码。
在项目属性中,将“目标平台”设置为“通用”。
创建安装包:假如目标是运行Windows10桌面版(家庭版、专业版、企业版和教育版)的设备,请使用可配置的INF文件。假如目标是运行Windows10联通版的设备视频通用代码是什么,请使用PkgGen生成.spkg文件。
为桌面版或Windows10联通版Windows10生成、安装、部署和调试驱动程序。
代码示例
Sysvad和SwapAPO已转换为通用Windows驱动程序示例。有关详尽信息,请参阅示例音频驱动程序。
适用于音频的通用Windows驱动程序的可用编程插口
从Windows10开始,驱动程序编程插口是基于OneCoreUAP的Windows版本的一部份。通过使用该通用集,可以编撰通用Windows驱动程序。这种驱动程序将在桌面版和Windows10联通版的Windows10以及其他Windows10版本上运行。
使用通用音频驱动程序时,可以使用以下DDI。
将现有音频驱动程序转换为通用Windows驱动程序
根据此过程将现有音频驱动程序转换为通用Windows驱动程序。
确定现有驱动程序调用是否将在OneCoreUAPWindows上运行。检测参考页的要求部份。有关详尽信息,请参阅音频设备参考。
将驱动程序重新编译为通用Windows驱动程序。在项目属性中,将“目标平台”设置为“通用”。
使用ApiValidator.exe工具验证驱动程序调用的DDI是否对通用Windows驱动程序有效。此工具是适用于Windows10的Windows驱动程序工具包(WDK)的一部份,假如使用VisualStudio2015,该工具会手动运行。有关详尽信息,请参阅验证通用Windows驱动程序。
假如驱动程序调用不属于OneCoreUAP的插口,编译器将报告错误。
将这种调用替换为备用调用,或则创建代码解决方式,或编撰新的驱动程序。
创建组件化音频驱动程序安装概述
若要创建更顺畅、更可靠的安装体验并更好地支持组件服务,请将驱动程序安装过程界定为以下组件。
(可选)单独的INF文件可用于DSP和编解码器。
此图总结了组件化音频安装。
单独的扩充INF文件用于自定义特定系统的每位基本驱动程序组件。自定义项包括优化参数和其他特定于系统的设置。有关详尽信息,请参阅使用扩充INF文件。
扩充INF文件必须是通用INF文件。有关详尽信息,请参阅使用通用INF文件。
有关使用INF文件添加软件的信息,请参阅使用组件INF文件和DCH设计原则和最佳做法。
递交组件化INF文件
必须将APOINF包与基本驱动程序包分开递交到合作伙伴中心。有关创建包的详尽信息,请参阅WindowsHLK入门。
SYSVAD组件化INF文件
若要查看组件化INF文件的示例,请查看Github上的sysvad/TabletAudioSample。
文件名说明
ComponentizedAudioSample.inf
基本组件化示例音频INF文件。
ComponentizedAudioSampleExtension.inf
具有其他OEM自定义项的sysvad基础的扩充驱动程序。
ComponentizedApoSample.inf
APO示例扩充INF文件。
传统的INF文件在SYSVAD示例中依然可用。
文件名说明
tabletaudiosample.inf
一个桌面整体INF文件,其中包含安装驱动程序所需的所有信息。
APO供应商特定的优化参数和功能配置
所有APO供应商系统特定的设置、参数和优化值都必须通过扩充INF包进行安装。在许多情况下,可以使用INFAddReg指令以简单方法执行此操作。在更复杂的情况下,可以使用优化文件。
基本驱动程序包不得依赖这种自定义项来运行(,其实,)功能可能会降低。
UWP音频设置APP
若要实现最终用户UI,请使用适用于Windows通用音频驱动程序的硬件支持应用(HSA)。有关详尽信息,请参阅硬件支持应用(HSA):驱动程序开发人员的步骤。
以编程方法启动UWP硬件支持应用
若要基于驱动程序风波以编程方法启动UWP硬件支持应用,(比如,当新音频设备)联接时,请使用WindowsShellAPI。Windows10ShellAPI支持基于资源激活或通过IApplicationActivationManager直接启动UWPUI的方式。有关UWP应用程序的手动启动的更多详尽信息,请参阅。
APO和设备驱动程序供应商对AudioModulesAPI的使用
音频模块API/DDI致力标准化通讯传输(而不是将UWP应用程序或用户模式服务之间传递给内核驱动程序模块或DSP处理块的命令的合同)。音频模块须要实现正确的DDI的驱动程序来支持模块枚举和通讯。命令作为二补码文件传递,解释/定义由创建者决定。
音频模块当前并非致力推动UWP应用与音频引擎中运行的SWAPO之间的直接通讯。
有关音频模块的详尽信息,请参阅实现音频模块通讯和配置和查询音频设备模块。
APOHWID字符串构造
APO硬件ID同时包含标准信息和供应商定义的字符串。
它们的构造如下:
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4) &REV_r(4)
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4)
SWC\VEN_v(4)&AID_a(4)
其中:
即插即用驱动程序更新的INF版本和日期评估
Windows即插即用系统会评估日期和驱动程序版本,以确定在存在多个驱动程序时要安装的驱动器。有关详尽信息,请参阅Windows怎样对驱动程序进行排行。
若要准许使用最新的驱动程序,请确保并更新每位新版本的驱动程序的日期和版本。
APO驱动程序注册表项
对于第三方定义的音频驱动程序/APO注册表项,请使用HKR。
使用Windows服务推动UWPAPO通讯
管理用户模式组件(如ASO)并非严格要求Windows服务。并且,假如你的设计包括RPC服务器来推动UWPAPO通讯,我们建议在Windows服务中实现该功能,之后控制音频引擎中运行的APO。
生成适用于Windows10Desktop的Sysvad通用音频示例
完成以下步骤,为Windows10桌面生成sysvad示例。
(tabletaudiosample.inf)找到桌面inf文件,并将制造商名称设置为“Contoso”等值
在“解决方案资源管理器”中,选择并按住(或右键单击“)解决方案”sysvad“,之后选择”ConfigurationManager”。假如要布署到64位版本的Windows,请将目标平台设置为x64。确保所有项目的配置和平台设置都相同。
在sysvad解决方案中生成所有项目。
从生成中找到生成的输出目录。诸如,它可以坐落如下所示的目录中:
C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
将以下文件复制到要安装sysvad驱动程序的系统:
文件说明
TabletAudioSample.sys
驱动程序文件。
tabletaudiosample.inf
一个信息(INF)文件,其中包含安装驱动程序所需的信息。
sysvad.cat
目录文件。
SwapAPO.dll
用于管理ADO的UI的示例驱动程序扩充。
KeywordDetectorAdapter.dll
示例关键字(keyword)测量器。
安装和测试驱动程序
根据以下步骤在目标系统上使用PnpUtil安装驱动程序。
打开管理员命令提示符,并在将驱动程序文件复制到的目录中键入以下内容。
pnputil-i-atabletaudiosample.inf
应完成sysvad驱动程序安装。假如有任何错误,可以检测此文件以获取其他信息:%windir%\inf\setupapi.dev.log
在“设备管理器”的“视图”菜单上,选择“按类型排序的设备”。在设备树中,找到Microsoft虚拟音频设备(WDM)-Sysvad示例。这一般坐落“声音、视频和游戏控制器”节点下。
在目标计算机上,打开控制面板并导航到“硬件和声音>管理音频设备”。在“声音”对话框中视频通用代码是什么,选择标记为“Microsoft虚拟音频设备(WDM)-Sysvad示例”的耳机图标,之后选择“设置默认值”,但不选择“确定”。这会使“声音”对话框保持打开状态。
在目标计算机上找到MP3或其他音频文件,之后双击播放它。之后在“声音”对话框中,验证音量级别指示器中是否存在与Microsoft虚拟音频设备关联的活动(WDM)-Sysvad示例驱动程序。