ACX version overview

This topic discusses ACX and KMDF version information. For a general overview of ACX, see ACX audio class extensions overview.

Note

The ACX headers and libraries are not included in the WDK 10.0.22621.2428 (released October 24, 2023), but are available in previous versions, as well as the latest (25000 series builds) Insider Preview of the WDK. For more information about preview versions of the WDK, see Installing preview versions of the Windows Driver Kit (WDK).

ACX version information

The current version of ACX is 1.1.

Windows OS support for ACX versions are described in the following table.

Operating system KMDF version Supported ACX version Version notes
Windows 10, version 2004 1.31 1.1 Initial public release.

KMDF version information

ACX objects are Windows Driver Framework (WDF) objects - WDFOBJECT. For more information about WDF, see Introduction to Framework Objects. ACX binds to a specific version of KMDF at runtime. For more information, see KMDF Version History.

For information about installing different versions of WDF/KMDF, see the following topics:

ACX Binds to a specific version of KMDF at runtime. When Windows loads a kernel-mode WDF driver, the driver is dynamically bound to the KMDF run-time library (WdfMM000.sys). Multiple drivers can share the same run-time library (DLL) image, and the run-time libraries for two major versions can co-exist side by side. For information about KMDF versioning, see Framework Library Versioning.

Multiple ACX version support

When you build the audio driver, you specify the maximum and minimum version of the ACX framework you want to use at compilation time. Thus, the audio driver at run time can assume that the max/min version of DDI is available, else the audio driver fails to load.

ACX drivers can be written to run on multiple versions of ACX and at run-time make the call if a specific ACX DDI, structure, etc. is present or not in that version. ACX_IS_FUNCTION_AVAILABLE(FunctionName) can be used to see if a specific function in available in a specific version of ACX. For more information, see ACX_IS_FUNCTION_AVAILABLE macro.

The following code, provides an example on how to check if a function is available.

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

Also available are these similar functions.

ACX_IS_STRUCTURE_AVAILABLE(StructName) described in ACX_IS_STRUCTURE_AVAILABLE macro.

ACX_IS_FIELD_AVAILABLE(StructName, FieldName) described in ACX_IS_FIELD_AVAILABLE macro.

ACX also supports the ACX_DRIVER_VERSION_AVAILABLE_PARAMS_INIT function which can be used to check version information of the audio driver as shown in the following code sample.

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

See also

ACX_IS_FUNCTION_AVAILABLE macro

ACX audio class extensions overview

ACX reference documentation