Port 類別簡介

PCI 和 DMA 型音訊裝置的大部分硬體驅動程式都是以埠類別庫為基礎,可透過 PortCls 系統驅動程式 (Portcls.sys) 存取。 PortCls 是 Microsoft 隨附于作業系統的音訊埠類別驅動程式。 PortCls 提供一組埠驅動程式,可實作大部分的一般核心串流 (KS) 篩選功能。 因此,PortCls 可簡化音訊驅動程式開發人員的工作。 硬體廠商只需要提供一組迷你埠驅動程式來處理音訊介面卡的硬體特定功能。

雖然硬體廠商可以選擇為其音訊裝置實作自己的 KS 篩選器,但對於一般音訊裝置而言,這個選項既困難又不必要。 您可以開發 KS 篩選準則,以符合 Stream.sys、Stream 類別驅動程式,或 Avstream.sys AVStream 類別驅動程式。 但以 Stream.sys 為基礎的 KS 篩選器無法利用只有 AVStream 中提供的改進功能。 如需 KS 篩選器和 PortCls 的詳細資訊,請參閱使用 WDM 音訊驅動程式消費者入門

PortCls 的內部實作可能會演進,以利用後續 Windows 版本中的核心串流改善,同時維持與現有驅動程式的相容性。

PortCls 會在 Portcls.sys 系統檔案中實作為匯出驅動程式, (核心模式 DLL) ,並包含下列專案:

  • 一組可由配接器驅動程式呼叫的協助程式函式

  • 音訊埠驅動程式的集合

音訊裝置的硬體廠商必須負責提供 介面卡驅動程式。 配接器驅動程式包含初始化和迷你埠驅動程式管理程式碼, (包括 DriverEntry 函式) 和 音訊迷你埠 驅動程式的集合。

當作業系統載入配接器驅動程式時,配接器驅動程式會建立一組迷你埠驅動程式物件,並提示 PortCls 系統驅動程式建立一組對應的埠驅動程式物件。 (Subdevice Creation 中的程式碼範例說明此程式。) 這些埠驅動程式通常是 Portcls.sys 檔案中可用的部分。 每個迷你埠驅動程式都會從 Portcls.sys 系結至相符的埠驅動程式,以形成完整的 子驅動程式 。 埠和迷你埠子裝置驅動程式的組合是 KS 篩選器 (請參閱 音訊 篩選器) 。 例如,一般介面卡驅動程式可能包含三個迷你埠驅動程式:WaveRT、DMusUART 和 Topology (搭配 IMiniportWaveRTIMiniportDMusIMiniportTopology 介面) 。 在初始化期間,這些迷你埠驅動程式會與包含在 Portcls.sys 檔案中的 IPortWaveRTIPortDMusIPortTopology) 介面 (系結至 WaveRT、DMus 和拓撲埠驅動程式 (。 這三個子裝置驅動程式的每一個都採用 KS 篩選器的形式。 這三個篩選器會同時公開音訊配接器的完整功能。

一般而言,埠驅動程式會為每個音訊子裝置類別提供大部分的功能。 例如,WaveRT 埠驅動程式會執行大部分將音訊資料串流至以 DMA 為基礎的音訊裝置所需的工作,而迷你埠驅動程式則提供裝置特定的詳細資料,例如 DMA 位址和裝置名稱。

音訊配接器驅動程式和迷你埠驅動程式通常是以 Microsoft C++ 撰寫,並廣泛使用 COM 介面。 埠迷你埠驅動程式架構可提升模組化設計。 迷你埠驅動程式寫入器應將其驅動程式實作為衍生自 IMiniport 介面的 C++ 類別,其定義于標頭檔 Portcls.h 中。 硬體初始化會在驅動程式載入時間進行,通常是在IMiniport衍生類別的Init方法中 (例如IMiniportWaveRT::Init) 。 如需音訊迷你埠驅動程式之 COM 實作的詳細資訊,請參閱 核心中的 COM

下圖說明埠和迷你埠驅動程式與其在音訊堆疊中位置之間的關聯性。

圖表說明音訊堆疊中埠和迷你埠驅動程式之間的關聯性。

在上圖中,KSEndpoint 元件是系統提供的檔案,隨附于 Windows Vista 和更新版本的 Windows。 此元件是以 DLL (Audiokse.dll) 的形式提供。 KSEndpoint 會抽象化核心模式裝置端點,並提供音訊引擎存取抽象端點。 如需音訊引擎的詳細資訊,請參閱 探索 Windows Vista 音訊引擎

上圖中的圖例顯示方塊,這些方塊代表廠商提供的驅動程式元件。 請注意,每個迷你埠驅動程式的上邊緣會與每個埠驅動程式的下邊緣介面。 例如,WaveRT 埠驅動程式會將 IPortWaveRT 介面公開至 WaveRT 迷你埠驅動程式,這會向埠驅動程式公開 IMiniportWaveRT 介面。 這些介面有時稱為 上邊緣下邊緣 介面。

埠類別和 AVStream 類別驅動程式很類似,因為它們都是 WDM 驅動程式,而且兩者都支援 WDM 核心串流架構。 不過,埠類別驅動程式與 AVStream 類別驅動程式在多處理器處理和重新進入的領域不同。 埠類別驅動程式會執行下列動作:

  • 使用結合類別驅動程式、埠驅動程式和廠商提供的迷你埠驅動程式的三層式方法。

  • 具有有限的音訊功能數目,讓迷你埠驅動程式能夠更接近音訊硬體運作。

  • 允許針對特定裝置連結數個埠或迷你埠驅動程式。 此功能可讓您更妥善地支援多功能卡片。

  • 例如,不支援外部匯流排 (USB) 。 所有埠驅動程式都支援位於系統匯流排上的裝置, (PCMCIA 和 PCI) 。

描述 WDM 音訊埠和迷你埠驅動程式的術語與用於其他 Windows 驅動程式類別的詞彙不同。 WDM 音訊術語會說明這些差異。

本節討論下列主題:

實作 Function-Specific 介面

作業系統支援的 PortCls