用于卸载音频处理的 Portcls 帮助程序接口

本主题介绍 Microsoft 已添加到其音频端口类驱动程序 (PortCls) 的帮助程序接口,以简化支持卸载音频处理的驱动程序的实现。

当你开发的 WaveRT 微型端口驱动程序使用能够处理硬件卸载音频流的音频适配器时,微型端口驱动程序可与 PortCls 配合使用来流式传输和/或处理音频数据。

PortCls 可以处理所有卸载相关的内核流式处理 (KS) 属性,这使得开发 WaveRT 微型端口驱动程序变得简单,以公开对处理硬件卸载音频流的支持。 由于更新,PortCls 仅通过两个新定义的接口调用基础微型端口驱动程序,进行硬件和/或特定于驱动程序的操作:

必须开发两个类才能使用这些接口,每个接口一个。

使用 IMiniportAudioEngineNode

为与 IMiniportAudioEngineNode 一起使用而开发的类还必须继承自 IMiniportWaveRTIMiniportAudioEngineNode 中定义的方法允许驱动程序使用通过 KS 筛选器句柄访问音频引擎的 KS 属性。 类/接口层次结构如下所示:

Diagram showing custom WaveRT miniport class inheriting from IMiniportWaveRT and IMiniportAudioEngineNode.

因此,例如,如果开发名为 CYourMiniportWaveRT 的类,则如上图所示,CYourMiniportWaveRT 必须实现为两个父接口定义的所有方法(显示为操作)。

此类的框架模板将包含以下代码:

class CMiniportWaveRT : 
    public IMiniportWaveRT,
    public IMiniportAudioEngineNode,
    public CUnknown
{
...

    IMP_IMiniportWaveRT;
    IMP_IMiniportAudioEngineNode;
...

};

Portcls.h 头文件定义这些接口。

使用 IMiniportStreamAudioEngineNode

为与第二个接口 IMiniportStreamAudioEngineNode 一起使用而开发的类还必须继承自 IMiniportWaveRTStreamNotificationIMiniportStreamAudioEngineNode 中定义的方法允许驱动程序使用 KS 属性,这些属性通过引脚实例句柄访问音频引擎。 类/接口层次结构如下所示:

Diagram showing custom WaveRT stream miniport class inheriting from IMiniportWaveRTStreamNotification and IMiniportStreamAudioEngineNode.

因此,例如,如果开发名为 CYourMiniportWaveRTStream 的类,则如上图所示,CYourMiniportWaveRTStream 必须实现为两个父接口定义的所有方法。

此类的框架模板将包含以下代码:

class CMiniportWaveRTStream : 
    public IMiniportWaveRTStreamNotification,
    public IMiniportStreamAudioEngineNode,
    public CUnknown
{
...
    IMP_IMiniportWaveRTStream;
    IMP_IMiniportWaveRTStreamNotification;
    IMP_IMiniportStreamAudioEngineNode;
...

};

Portcls.h 头文件定义这些接口。 有关如何开发可处理硬件卸载音频流的驱动程序的详细信息,请参阅硬件卸载音频驱动程序实现