ACX 版本信息

本主题讨论 ACX 和 KMDF 版本信息。 有关 ACX 的一般概述,请参阅 ACX 音频类扩展概述

ACX 和 KMDF 版本

使用 !wdfkd.wdfldr 扩展查看 ACX 的版本信息。 !wdfkd.wdfldr 扩展显示有关当前动态绑定到 Windows 驱动程序框架的驱动程序的信息。

!wdfkd.wdfldr Acx01000.sys

版本 1.1

ACX 的当前版本为 1.1,建议用于所有新的驱动程序开发。

下表介绍了 Windows OS 的 ACX 版本支持。

操作系统 KMDF 版本 支持的 ACX 版本 版本说明
Windows 10 版本 2004 最低为 1.31 核 1.1 初始公开发布。

这些 DDI 已在版本 1.1 中添加。

  • AcxCircuitGetElementsCount
  • AcxCircuitGetPinsCount
  • AcxCircuitGetSymbolicLinkName
  • AcxCircuitGetNotificationId
  • AcxFactoryCircuitGetSymbolicLinkName
  • AcxDataFormatListRemoveDataFormats
  • AcxPinRemoveModeDataFormatList
  • AcxStreamGetElementsCount
  • AcxStreamGetNotificationId
  • AcxTargetCircuitGetSymbolicLinkName
  • AcxTargetPinFlushModeDataFormatListCache

预发布 1.0 版本

不建议使用版本 1.0 进行新的驱动程序开发,但它用于 ACX 驱动程序的早期开发和测试。

操作系统 KMDF 版本 支持的 ACX 版本 版本说明
Windows 10 版本 1903 1.29 1.0 预发行版。

KMDF 版本信息

ACX 对象是 Windows 驱动程序框架 (WDF) 对象 - WDFOBJECT。 有关 WDF 的详细信息,请参阅框架对象简介。 ACX 在运行时绑定到特定版本的 KMDF。 有关详细信息,请参阅 KMDF 版本历史记录

有关安装不同版本的 WDF/KMDF 的信息,请参阅以下主题:

ACX 在运行时绑定到特定版本的 KMDF。 当 Windows 加载内核模式 WDF 驱动程序时,会将驱动程序动态绑定到 KMDF 运行时库 (WdfMM000.sys)。 多个驱动程序可以共享相同的运行时库 (DLL) 映像,并且两个主要版本的运行时库可以并存。 有关 KMDF 版本控制的信息,请参阅框架库版本控制

多个 ACX 版本支持

生成音频驱动程序时,可以指定编译时要使用的 ACX 框架的最高和最低版本。 因此,运行时的音频驱动程序可以假定 DDI 的最高/最低版本可用,否则音频驱动程序无法加载。

如果特定 ACX DDI、结构等存在于该版本中,则可以将 ACX 驱动程序编写为在多个 ACX 版本上运行,并在运行时进行调用。 ACX_IS_FUNCTION_AVAILABLE(FunctionName) 可用于查看特定版本的 ACX 中是否提供特定函数。 有关详细信息,请参阅 ACX_IS_FUNCTION_AVAILABLE 宏

以下代码提供了有关如何检查函数是否可用的示例。

    if (ACX_IS_FUNCTION_AVAILABLE( AcxTargetPinFlushModeDataFormatListCache)) {
        DbgPrint("Available:  AcxTargetPinFlushModeDataFormatListCache\n");
    }
    else
    {
        DbgPrint("Not available:  AcxTargetPinFlushModeDataFormatListCache\n");
        ASSERT(FALSE);
    }

还提供这些类似的函数。

ACX_IS_STRUCTURE_AVAILABLE 宏中介绍的 ACX_IS_STRUCTURE_AVAILABLE(StructName)

ACX_IS_FIELD_AVAILABLE 宏中介绍的 ACX_IS_FIELD_AVAILABLE(StructName, FieldName)

ACX 还支持ACX_DRIVER_VERSION_AVAILABLE_PARAMS_INIT 函数,该函数可用于检查音频驱动程序的版本信息,如以下代码示例所示。

    ACX_DRIVER_VERSION_AVAILABLE_PARAMS_INIT(&ver, 1, 1);
    if (!AcxDriverIsVersionAvailable(driver, &ver))
    {
        ASSERT(FALSE);
        goto exit;
    } 

另请参阅

ACX_IS_FUNCTION_AVAILABLE 宏

ACX 音频类扩展概述

ACX 参考文档