ACX version information

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

ACX and KMDF versions

Use the !wdfkd.wdfldr extension to view version information for ACX. The !wdfkd.wdfldr extension displays information about the drivers that are currently dynamically bound to the Windows Driver Frameworks.

!wdfkd.wdfldr Acx01000.sys

Version 1.1

The current version of ACX is 1.1 and is recommended for all new driver development.

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 Minimum 1.31 1.1 Initial public release.

These DDIs were added in version 1.1.

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

Pre-release 1.0 version

Version 1.0 is not recommended for new driver development, but it was used in early development and testing of ACX drivers.

Operating system KMDF version Supported ACX version Version notes
Windows 10, version 1903 1.29 1.0 Pre-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