共用方式為


HD 音訊 DDI 版本之間的差異

HD Audio DDI 提供三個稍有不同的版本,如下所示:

  • HD Audio DDI 的基準版本,由 HDAUDIO_BUS_INTERFACE 結構定義。 音訊和數據機編解碼器的大部分功能驅動程式只需要此 DDI 版本所提供的功能。 此版本可透過 Windows XP 和 Windows Vista 提供的 HD 音訊總線驅動程式取得。

  • 定義於 HDAUDIO_BUS_INTERFACE_V2 結構中的 HD 音訊 DDI 增強版。 此版本的 DDI 提供額外的功能,可彈性地支援 DMA 驅動事件通知。 它可在 Windows Vista 和更新版本的 Windows 中使用。

  • HDAUDIO_BUS_INTERFACE_BDL 結構定義的經過修改的 HD 音訊 DDI 版本。 此版本符合相對較少的音訊和數據機驅動程式的需求,這些驅動程式必須對 DMA 作業的緩衝區描述元清單 (BDLS) 設定有額外的控制。 此版本的 DDI 適用於 Windows XP 和更新版本的 Windows。 不過,請改用 HDAUDIO_BUS_INTERFACE 或 HDAUDIO_BUS_INTERFACE_V2 DDI 版本。 .

在這三個結構中,前五個成員的名稱和類型符合 INTERFACE 結構五個成員的名稱和類型。 如需這些成員值的相關信息,請參閱 取得HDAUDIO_BUS_INTERFACE DDI 物件取得HDAUDIO_BUS_INTERFACE_V2 DDI 物件取得HDAUDIO_BUS_INTERFACE_BDL DDI 物件

HD Audio DDI 三個版本中的例程會執行下列工作:

  • 將命令傳送至編解碼器,並擷取這些命令的回應。

  • 配置並設定 DMA 引擎,以傳輸轉譯和擷取數據流中的數據。

  • 將一或多個 DMA 引擎的數據流狀態變更為執行、暫停、停止或重設。

  • 保留轉譯和擷取數據流的連結頻寬。

  • 提供掛鐘寄存器和連結位置寄存器的直接存取權。

  • 通知用戶端來自編解碼器的未經請求的回應。

  • 註冊核心事件,讓他們可以接收 DMA 進度通知。

DDI 的HDAUDIO_BUS_INTERFACE和HDAUDIO_BUS_INTERFACE_BDL版本有下列差異:

當用戶端在第一個 DDI 版本中呼叫 AllocateDmaBuffer 例程時,HD 音訊總線驅動程式:

  • 配置 DMA 緩衝區和 BDL 供 DMA 引擎使用。

  • 初始化 BDL。

  • 設定 DMA 引擎以使用緩衝區和 BDL。

相反地,第二個 DDI 版本中的 AllocateContiguousDmaBuffer 例程會配置 DMA 緩衝區和 BDL 的記憶體,但依賴呼叫端來初始化 BDL。 SetupDmaEngineWithBdl 例程會設定 DMA 引擎,以使用緩衝區和呼叫端初始化的 BDL。

BDL 包含 DMA 引擎散佈/收集佇列中的實體記憶體區塊清單。 藉由呼叫 SetupDmaEngineWithBdl 來設定 BDL,用戶端可以指定 DMA 引擎產生中斷之數據流中的點。 用戶端會藉由在選取的 BDL 專案中設定插斷完成 (IOC) 位來執行此動作。 透過這項功能,用戶端可以精確地控制在處理音訊數據流期間發生的 IOC 中斷時間。 音訊數據機驅動程式也會使用第二個 DDI 版本來取得精確的系統時鐘資訊。

如需詳細資訊,請參閱 Intel 高階音訊規格

不過,幾乎所有客戶端都會使用 DDI 的HDAUDIO_BUS_INTERFACE版本。 只有少數需要精確控制中斷時間的用戶端會使用HDAUDIO_BUS_INTERFACE_BDL版本。