共用方式為


支援混合 2D 和 3D 針腳

如果您的 WDM 音訊驅動程式支援混合 2D 和 3D 針腳,3D 針腳可以雙精度浮點數作為 2D 針腳使用,但反之亦然。 當 DirectSound 需要 2D 針腳時,如果驅動程式有 3D 針腳可用,它就可以取代未使用的 3D 針腳。 不過,如果 DirectSound 需要 3D 針腳,它會繼續搜尋驅動程式的釘選實例清單,直到找到 3D 針腳為止,忽略搜尋期間遇到的任何 2D 針腳。 DirectSound 會依照列出的順序檢查驅動程式的針腳處理站清單,直到找到符合其需求的針腳實例為止。

報告 2D 針腳計數時,您的驅動程式應該指定 2D 針腳實例的數目加上 3D 針腳實例的數目。 報告 3D 針腳計數時,您的驅動程式應該忽略 2D 針腳,並只指定 3D 針腳實例的數目。

以 Microsoft Windows 2000 和 Windows 98 散發的 DirectSound 版本在處理針腳處理站時發生已知問題,該處理站會公開混合 2D 和 3D 針腳:DirectSound 不正確地報告 3D 針腳計數為 2D 針腳實例數目加上 3D 針腳實例數目。 此問題的因應措施是撰寫驅動程式,以便將 2D 和 3D 針腳隔離成兩個不同的針腳處理站。 一個處理站只會公開 2D 針腳,另一個處理站只會公開 3D 針腳。

使用 WDM 驅動程式時,DirectSound 會將 2D 針腳計數正確報告為兩個工廠的 2D 和 3D 針腳計數總和,並正確地報告 3D 針腳計數為來自一個 3D 針腳處理站的 3D 針腳數目。 公開 2D 和 3D 針腳的個別處理站時,驅動程式應該在 3D 針腳處理站之前列出 2D 針腳處理站。 這是必要的,因為當 DirectSound 尋找 2D 針腳時,它會使用找到的第一個 2D 或 3D 針腳,而 DirectSound 會依照驅動程式列出它們的順序檢查針腳處理站。 如果驅動程式先列出 3D 處理站,它可能會讓 DirectSound 不必要地使用 3D 針腳取代 2D 針腳來消耗 3D 針腳。

總而言之,如果您的驅動程式公開混合了 2D 和 3D 針腳,它應該遵循這些規則,以在舊版 DirectSound 上正確執行:

  • 分別為 2D 和 3D 針腳提供兩個不同的針腳處理站。

  • 在 3D 針腳處理站前列出 2D 針腳處理站。

這些因應措施在較新版本的 DirectSound 中是不必要的。 上述問題已在 Windows Me 和 Windows XP 和更新版本中修正。 它也會在 DirectSound 8 中修正,此轉散發套件可與舊版 Windows 搭配使用。 透過此修正,您的驅動程式可以在單一針腳處理站中安全地結合 2D 和 3D 針腳,而 DirectSound 會正確報告 2D 和 3D 針腳計數。 此外,當 DirectSound 需要 2D 針腳時,它只會使用 3D 針腳來取代 2D 針腳,只有在它已耗盡來自所有針腳處理站的 2D 針腳供應時。