ACX 版本資訊
本主題討論 ACX 和 KMDF 版本資訊。 如需 ACX 的一般概觀,請參閱 ACX 音訊類別延伸模組概觀。
ACX 和 KMDF 版本
使用 !wdfkd.wdfldr 擴充功能來檢視 ACX 的版本資訊。 !wdfkd.wdfldr 延伸模組會顯示目前動態系結至 Windows 驅動程式架構之驅動程式的相關信息。
!wdfkd.wdfldr Acx01000.sys
第 1.1 版
目前版本的 ACX 為 1.1 ,建議用於所有新的驅動程式開發。
下表說明 ACX 版本的 Windows OS 支援。
作業系統 | KMDF 版本 | 支援的 ACX 版本 | 版本注意事項 |
---|---|---|---|
Windows 10 (版本 2004) | 最小值 1.31 | 1.1 | 初始公開版本。 |
這些 DIS 已在 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 Driver Framework (WDF) 物件 - WDFOBJECT。 如需 WDF 的詳細資訊,請參閱 Framework 物件簡介。 ACX 會在運行時間系結至特定版本的 KMDF。 如需詳細資訊,請參閱 KMDF 版本歷程記錄。
如需安裝不同 WDF/KMDF 版本的相關信息,請參閱下列主題:
ACX 系結至運行時間的特定 KMDF 版本。 當 Windows 載入內核模式 WDF 驅動程式時,驅動程式會動態系結至 KMDF 執行時間連結庫 (WdfMM000.sys)。 多個驅動程式可以共用相同的運行時間連結庫 (DLL) 映像,而兩個主要版本的運行時間連結庫可以並存。 如需 KMDF 版本設定的相關信息,請參閱 架構連結庫版本控制。
多個 ACX 版本支援
當您建置音訊驅動程式時,您可以指定編譯時要使用的 ACX 架構上限和最低版本。 因此,運行時間的音訊驅動程式可以假設 DDI 的 max/min 版本可用,否則音訊驅動程式無法載入。
如果特定 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;
}