PortClass音频
+ -

PortClass提供的音频MINI端口驱动

2021-07-01 205 0

PortClass提供了以下几种MiniPort驱动类型。

  • Cyclic DMA wave input and output:此类Mini端口驱动程序支持访问ISA和其他声卡的基于DMA的wave I/O功能。接口专门处理循环(autoinit)DMA缓冲区,流问题由端口驱动程序解决。

  • Scatter/gather wave input and output:此类微型端口驱动程序支持访问wave音频功能,如PCI声卡的wave I/O功能。在这个模型中,wave音频缓冲区的列表被逻辑地追加以创建wave音频流。

  • Static wave table output:此类微型端口驱动程序支持访问波形表合成器声音,如Creative Labs SoundBlaster AWE32适配器提供的声音。该接口允许将静态波形数据传输到适配器并操作语音参数。

  • Topology:此类微型端口驱动程序支持访问音频适配器通常提供的各种控件(音量、均衡、硬件混响)。接口本身与拓扑中组件(称为节点)的枚举、发现它们之间的互连以及控制参数的读写有关。

  • MIDI input and output:此类微型端口驱动程序支持访问基于MIDI的功能,如FM合成器和基于UART的硬件MIDI接口。定时由端口驱动程序或驱动程序堆栈中更高的某个其他组件处理,使微型端口能够集中精力立即实现或传递MIDI消息。MIDI设备,如MPU-401协处理器,它们处理自己的时间,需要一个专门的端口驱动程序,不在这个接口的范围内。

当然,随着Windows操作系统的版本升级,最新的微软文档支持以下6种:WavePci, WaveCyclic, WaveRT, MIDI, DMus, and Topology

WaveRT 从Vista之后开始初建议使用。

https://docs.microsoft.com/zh-cn/windows-hardware/drivers/audio/specifying-the-topology

WaveRT Driver

#WaveRT Driver

0 篇笔记 写笔记

WDDM 子设备的枚举过程
这里的子设备指的是显示适配器(display adapter)的子设备。显示适配器子设备的枚举是通过显示端口驱动程序(display port driver), 显示Mini端口驱动程序(display miniport driver), and video present network (Vi......
PortClass中的COM
一般的Windows驱动我们采用的是WDM驱动架构,最近的Windows驱动架构WDF也是建立在WDM基础上的。这些基于WDM的一般设备驱动可以应付大部分的设备驱动,如串口,PCI,USB等通用设备驱动。但是微软的关于流的处理的一些服务及驱动采用的面向对象的设计方法,是基于COM进行开发的,典型的像......
PortClass流式音频架构
在Windows操作系统中,PortClass仅用于纯音频设备驱动的开发,其配合内核流式驱动模块ks.sys实现音频设备驱动的开发。内核流式驱动模块ks.sys包含两部分内容,一部分是提供内核通用的流式驱动模块,另一部分是avstream模块。avstream模块即可用于开发音频设备驱动,也可用......
PortClass音频驱动程序架构
音频适配器驱动程序是最低层的音频驱动,对下实现对硬件的操作,以上提供端口驱动的函数回调。所以音频适配器驱动的代码来自两部分,一部分是厂商提供的硬件驱动代码,一般是由portclass提供的通用音频驱动模块。入口函数因为适配器驱动程序是作为内核模式驱动程序服务安装的,所以和其它驱动一样,由操作系统加......
PortClass提供的音频MINI端口驱动
PortClass提供了以下几种MiniPort驱动类型。Cyclic DMA wave input and output:此类Mini端口驱动程序支持访问ISA和其他声卡的基于DMA的wave I/O功能。接口专门处理循环(autoinit)DMA缓冲区,流问题由端口驱动程序解决。Scatt......
PortClass InitializeAdapterDriver函数
InitializeAdapterDriver函数是PortClass驱动DriverEntry调用的第一个函数,也是惟一的函数。该函数的功能和其它的MINI小端口驱动一样,都是初始化相应的MIN小端口驱动框架的“结构体”,并使用系统提供的类驱动的回调函数来初始化相应的IRP回调函数,而我们函数的第......
PortClass PcAddAdapterDevice函数
PcAddAdapterDevice函数在WDK中声名如下:PORTCLASSAPI NTSTATUS NTAPI PcAddAdapterDevice( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalD......
PortClass 自定义启动函数StartDevice
通过上一节知道,IPR_MN_START_DEVICE的回调函数其实是PnpStartDevice,不过兜兜转转,最终执行的是我们在通过在PcAddAdapterDevcie函数的第三参数StartDevice。当然在执行我们自定义的这个StartDevice函数之前,PortClass框架类已经通......
PortClass 电源管理
电源管理实现的COM是AdapterPowerMgr,继承于IAdapterPowerManagement和CUnknown,用于电源的管理。class AdapterPowerMgr: public IAdapterPowerManagement, public CUnkn......
PortClass 拓扑结构实现原理
PortClass音频设备驱动中,除了设计电源管理之外,另一些重要的结构就是实现音频设备的MiniPort驱动。我们知道,PortClass提供了多种MiniPort端口驱动,我们只需要继承,并实例化并生成设备拓扑结构就行了。但多种MiniPort端口驱动的类型很多,我们一般选择Topology端......
PortClass IMiniportTopology拓扑结构的实现
需要实现IMiniportTopology的为:class Topology: public IMiniportTopology, public CUnknown{};当然Topology和WaveCyclic类为了实现上图的拓结构图,需要返回相应的拓结连接关系图,系统会调......
PortClass IMiniportWaveCyclic拓扑结构的实现
需要实现IMiniportWaveCyclic的类分别为:class WaveCyclic: public IMiniportWaveCyclic, public CUnknown{};当然WaveCyclic类为了实现上图的拓结构图,需要返回相应的拓结连接关系图,系统......
PortClass IMiniportWaveCyclicStream
IMiniportWaveCyclicStream接口表示流经WaveCyclicFilter上引脚的音频流。该过滤器包装了WaveCycle渲染或捕获设备,并通过将WaveCycle端口驱动程序与WaveCycle微型端口驱动程序配对来实现。需要实现IMiniportWaveCyclicStre......
WDM-UAA音频驱动简介
UAA全称Microsoft Universal Audio Architecture.Windows内核音频体系包括两大部分,分别为WDM和KS(kernel stream)组件。并且其支持的操作系统从Windows 98至现在最新的Windows 11.Windows对支持符合UAA规范的P......
PortClass电源管理回调函数及调用时机
PortClass电源管理使用IAdapterPowerManagement类实例来回调。class AdapterPowerMgr: public IAdapterPowerManagement, public CUnknown其三个回调函数分别为:PowerChan......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!