Share via


USB 複合裝置上的介面集合列舉概觀

複合USB裝置上的介面可以分組在集合中。 USB 泛型父驅動程式 (Usbccgp.sys) 可以四種方式列舉介面集合。

這些四種列舉介面集合的方法會以下列方式以階層方式排列:

  1. 廠商提供的回呼例程

    如果廠商已向 USB 泛型父驅動程式 (Usbccgp.sys 註冊回呼例程 (Usbccgp.sys) ,則泛型父驅動程式會優先使用回呼例程,並允許回呼例程將介面分組,而不是使用其他方法。 如需使用廠商提供的回呼例程列舉介面集合的詳細資訊,請參閱 USB 複合裝置上的介面集合列舉

  2. 等位功能描述項

    . 如果廠商已在 USB 泛型父驅動程式中啟用 CDC 和 WMCDC 列舉,則泛型父驅動程式會使用 等位功能描述元 (UFD) 將介面分組到集合中。 啟用時,這個方法的優先順序高於所有其他方法,但廠商提供的回呼例程除外。

  3. 介面關聯描述元

    如果有 介面關聯描述項 (IAD) ,USB 泛型父驅動程式一律會使用 IAD 來分組介面,而不是使用舊版方法。 Microsoft 建議廠商使用 IAD 來定義介面集合。

  4. 舊版音訊方法

    USB 泛型父驅動程式可以使用保留給音訊函式的舊版技術來列舉介面集合。 如果裝置上有任何 IAD,泛型父驅動程式就不會使用此方法。

自定義複合裝置介面集合的列舉

有些USB裝置有介面集合,USB 介面關聯描述項 (IAD) 無法描述。 在 Windows Vista 和更新版本的作業系統中,廠商可以自定義 USB 一般父驅動程式 (Usbccgp.sys ) 定義和列舉裝置介面集合的方式。 這是透過篩選驅動程式中的 列舉回呼例程 來完成。 回呼例程可協助泛型父驅動程式定義裝置的自定義介面集合。

若要讓泛型父驅動程式定義自定義介面集合,複合裝置的廠商必須:

  1. 實作列舉回呼例程 (USBC_START_DEVICE_CALLBACK) 。
  2. 提供USB裝置組態介面中回呼例程的指標, (USBC_DEVICE_CONFIGURATION_INTERFACE_V1) 的 StartDeviceCallback 成員。
  3. 提供符合複合裝置裝置裝置識別碼的 INF 檔案,並明確載入 USB 一般父驅動程式和篩選驅動程式。

實作考量

包含列舉回呼例程的篩選驅動程式可以是上層或較低的篩選驅動程式。 當USB一般父驅動程式收到啟動複合裝置 的IRP_MN_START_DEVICE 要求時,它會將 IRP_MN_QUERY_INTERFACE 要求傳送至驅動程式堆疊頂端,以查詢USB裝置組態介面。

在收到 IRP_MN_QUERY_INTERFACE 要求時,篩選驅動程式必須在要求的 InterfaceType 成員中檢查 GUID 類型,以確認要求的介面的類型為 USB_BUS_INTERFACE_USBC_CONFIGURATION_GUID。 如果是,篩選驅動程式會傳回 IRP 介面成員中 介面的指標。

列舉回呼例程必須傳回函式 描述元 陣列的指標, (USBC_FUNCTION_DESCRIPTOR 描述介面集合) 。 每個函式描述元都包含介面描述元陣列, (USB_INTERFACE_DESCRIPTOR 描述介面集合) 。 回呼例程必須同時配置來自非分頁集區的函式描述元和介面描述元。 泛型父驅動程序會釋放此記憶體。 回呼例程必須確保每個USB_INTERFACE_DESCRIPTOR的 NumberOfInterfaces 成員正確地報告介面集合中的介面數目。

泛型父驅動程式會為每個函式描述元建立實體裝置物件 (PDO) 。

USB 裝置組態介面和列舉回呼例程會在 一般父驅動程式例程中摘要說明。

USB 一般父驅動程式載入機制

當複合裝置符合 USB 複合裝置列舉中所述的需求時,操作系統會產生 相容的標識碼 USB\COMPOSITE ,以指出裝置是複合的。 相容的標識碼會在 Usb.inf 中產生相符專案,而且操作系統會自動載入 USB 一般父驅動程式,而不需要廠商提供的 INF 檔案協助。

不過,此預設機制不適用於需要介面集合自定義列舉的複合裝置,因為在默認機制中,系統不會載入必要的廠商提供的篩選驅動程式。 若要讓列舉回呼例程機制能夠運作,當USB泛型父系列舉複合裝置的介面集合時,必須已經載入公開USB裝置組態介面的篩選驅動程式。 這需要複合裝置的廠商安裝符合複合裝置裝置裝置識別碼的 INF 檔案,並明確載入 USB 一般父驅動程式和篩選驅動程式。

支援無線行動通訊裝置類別

在 Windows Vista 中, USB 一般父驅動程式 (Usbccgp.sys) 支援通用序列總線 (USB) 通訊裝置類別 (CDC) 和 USB 無線行動裝置通訊裝置類別 (WMCDC) 。

USB 無線行動通訊裝置類別 (WMCDC) 規格會建立主機與無線行動 (裝置之間的連線、控制和內容交換標準,例如,當裝置連線到 USB 埠時,行動電話) 。 WMCDC 是 CDC) (通訊裝置類別的延伸模組,其中包含廣泛的通訊和網路裝置。 本節說明支援 Windows 作業系統中 CDC 和 WMCDC 裝置的架構。

WMCDC 裝置是由多個函式組成,這些函式會分組為 邏輯信號集。 大部分 WMCDC 裝置都有單一邏輯手機,但裝置可能有多個邏輯手寫筆。 邏輯電話集通常包含數據/傳真數據機、物件存放區和通話控制設備等功能。 邏輯手機也可能包含其他 USB 規格所定義的支援功能,例如 USB 音訊類別規格、USB 人類輸入裝置 (HID) 類別規格,以及 USB 視訊類別規格。

Windows WMCDC 架構會使用原生 Windows 驅動程式來管理 WMCDC 裝置的功能。 例如,您可以使用 TAPI) 子系統 (Windows 電話語音應用程式介面來管理裝置的語音和數據/傳真數據機功能,以及 NDIS) 子系統 (NDIS) 子系統來管理裝置的乙太網路功能。 此外,您可以使用 WinUSB Winusb.sys Winusb.sys) 的協助,在使用者模式軟體中管理某些函式,例如物件交換通訊協定 (OBEX) 函式。

此影像顯示 WMCDC 裝置的範例驅動程式堆疊。

範例裝置組態和驅動程式堆疊的圖表。

在上圖中,WMCDC 裝置包含單一邏輯手機:OBEX 函式和數據機函式。 廠商提供的 INF 檔案會載入原生 Windows 驅動程式來管理數據機。 OBEX 函式是由廠商提供的使用者模式驅動程式所管理,該驅動程式會在 使用者模式驅動程式 Framework (UMDF) 中執行。 使用者模式驅動程式會使用 Windows 可攜式裝置 (WPD) 通訊協定來與使用者應用程式通訊, 以及 WinUSB 導出來與 USB 堆棧通訊的介面。 一般而言,廠商提供的 INF 檔案會針對使用 Winusb.sys 的每個介面集合載入個別的 Winusb.sys 實例。

登錄設定

USB 堆疊不會自動支援 WMCDC。 您必須提供載入 Usbccgp.sys 實例的 INF 檔案。 INF 檔案必須包含 AddReg 區段,將軟體機碼中的 EnumeratorClass 登錄值設定為從三個數位建構的 Usbccgp.sys REG_BINARY 值:0x02、0x00和 0x 00。 下列來自 INF 檔案範例的程式代碼範例說明如何將 EnumeratorClass 設定為適當的值。

[CCGPDriverInstall.NT]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg=CCGPDriverInstall.AddReg

[CCGPDriverInstall.NT.Services]
Include=usb.inf
Needs=Composite.Dev.NT.Services

[CCGPDriverInstall.AddReg]
HKR,,EnumeratorClass, 0x00000001,02,00,00

您必須指派給 EnumeratorClass 的值是從 INF 檔案中以十六進位數位組表示的三個字節二進位值所建構:02、00 和 00。 這三個數位分別對應到 USB 實作者論壇指派給 CDC 裝置類別、CDC 裝置子類別和 CDC 裝置通訊協定的值。

下列主題會進一步描述 WMCDC:

列舉 WMCDC 上的介面集合

(WMCDC) USB 無線行動通訊裝置類別是 USB 通訊裝置類別的子類別, (CDC) 。 WMCDC 規格會擴充,但不會大幅變更定義介面集合的 CDC 指導方針。 特別是,WMCDC 裝置必須符合定義介面集合的 CDC 指導方針。

CDC 介面集合包含主要介面 (USB_INTERFACE_DESCRIPTOR) 屬於通訊介面類別 () 或數據介面類別 bInterfaceClass = 0x02bInterfaceClass = 0x0A () 。 如果主要介面屬於通訊介面類別, (這是一般情況) ,則主要介面的子類別 (bInterfaceSubClass) 指定 CDC 控制模型。 控件模型表示介面集合中包含的介面類型。 如需 USB 實作者論壇所定義之控制模型的描述,請參閱 CDC 規格和 WMCDC 規格。

介面集合的主要介面後面接著一組強制類別特定的功能描述元,包括聯集功能描述元 (UFD) 。 UFD 會列出屬於集合的介面編號。 UFD 的 bMasterInterface 字段包含主要介面的數目。 零個或多個 bSubordinateInterface 欄位包含集合中其他 (次級) 介面的數目。

針對大部分類型的控件模型, USB 泛型父驅動程式 (Usbccgp.sys) 會為每個UFD建立一個實體裝置物件 (PDO) 。 但有些控件模型包含一個音訊介面,泛型父驅動程式會個別列舉音訊介面所屬的介面集合。 音訊介面會出現在介面集合UFD中的次級介面清單中, (bSubordinateInterface) ,但泛型父驅動程式會為音訊介面建立個別的 PDO。 音訊介面的 PDO 和音訊介面集合的 PDO 都直接高於裝置物件樹狀結構中父複合裝置的功能裝置物件 (FDO) 。 音訊介面的 PDO 不是介面集合的子系。

有兩個控件模型,其列舉特性可在登錄中設定:無線手機控制模型 (WHCM) ,定義邏輯手機,以及物件交換通訊協定 (OBEX) 控制模型。 若要設定這兩個控件模型的列舉特性,您必須提供 INF 檔案來載入 Usbccgp.sys 的實例,並在 Usbccgp.sys 該實例的軟體索引鍵中設定 CdcFlags 的值。 下表描述 CdcFlags 的組態選項。

CdcFlags 位 位設定為 0 位設定為 1
0 (mask = 0x00000001) USB 泛型父驅動程式會為每個 OBEX 介面建立個別的 PDO。 USB 泛型父驅動程式會為所有 OBEX 介面建立單一 PDO。
1 (mask = 0x00000010) USB 一般父驅動程式不會為 WHCM 介面建立 PDO, (邏輯手寫) 。 這些介面會從裝置物件樹狀結構的觀點保持隱藏。 USB 一般父驅動程式會為每個 WHCM 介面建立 PDO。

例如,若要清除這兩個位 (將它們設定為 0) ,您的 INF 檔案應該在 DDInstall.AddReg 區段中有下一行。

HKR, , CdcFlags, 0x00010001, 0x00000000

若要將這兩個位設定為1,您的INF檔案應該有下列這一行。

HKR, , CdcFlags, 0x00010001, 0x00000011

若要將位 0 設定為 1,並將位 1 設定為 0,您的 INF 檔案應該具有下列這一行。

HKR, , CdcFlags, 0x00010001, 0x00000001

您可以設定或重設位,而與其他位無關。

下圖說明不同的登錄設定如何為相同的裝置建立不同的裝置樹狀結構。

下圖說明 當 CdcFlags 的位 0 和位 1 為 0 時,PDO 組態。

說明 CdcFlags = 0x00000000之裝置對象對應介面集合的圖表。

上圖中的無線手機控制模型 (WHCM) 介面集合包含三個次級介面集合 (bSubordinateInterface) :兩個 OBEX 集合和調製解調器集合。 CdcFlags 的位 0 為 0,因此 USB 泛型父驅動程式不會為 WHCM 介面集合建立 PDO。 CdcFlags 的位 1 為 0,因此 USB 泛型父驅動程式會為每個 OBEX 介面集合產生個別的 PDO。

下圖說明設定 CdcFlags 的位 0 和位 1 時的 PDO 組態。

說明 CdcFlags = 0x00010001之裝置對象對應介面集合的圖表。

由於 CdcFlags 的位 0 設定為 1,所以 USB 泛型父驅動程式會為 WHCM 介面集合建立 PDO。 由於 CdcFlags 的位 1 設定為 1,所以 USB 一般父驅動程式會將兩個 OBEX 集合群組在一起,併產生這兩個 OBEX 集合的單一 PDO。

您可能想要在核心層級使用單一 PDO 來表示 OBEX 集合,並區分使用者模式驅動程式內每個個別的 OBEX 集合。 Windows 可攜式裝置 (WPD) 通訊協定可協助您在使用者層級的不同 OBEX 函式之間多任務數據流,當所有 OBEX 函式都分組為核心層級的單一 PDO 時。

下列範例 INF 檔案會載入 USB 泛型父驅動程式來管理 WMCDC 裝置,並指示 USB 泛型父系建立邏輯手寫的 PDO,以及為邏輯手機中的所有 OBEX 集合建立單一 PDO。

[Version]
Signature="$Windows NT$"
Class=USB
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
Provider=%MSFT%
DriverVer=07/01/2001,5.1.2600.0
CatalogFile=ExampleCatalog.cat
PnpLockdown=1

[ControlFlags]
ExcludeFromSelect=*

[Manufacturer]
CompanyName=CompanyName,NTamd64

[CompanyName.NTamd64]
%COMPANYNAME.DeviceDesc%=CCGPDriverInstall,USB\Vid_????&Pid_????

[CCGPDriverInstall.NT]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg=CCGPDriverInstall.AddReg

[CCGPDriverInstall.NT.Services]
Include=usb.inf
Needs=Composite.Dev.NT.Services

[CCGPDriverInstall.AddReg]
HKR,,EnumeratorClass,0x00000001,02,00,00
HKR,,CdcFlags,0x00010001,0x00010001

[Strings]
MSFT="Microsoft"
COMPANYNAME.DeviceDesc="USB Phone Parent"

處理 CDC 和 WMCDC 介面集合

USB 一般父驅動程式會以特殊方式處理無線手機控制模型 (WHCM) 介面。

下列清單摘要說明 CDC 和 WMCDC 介面集合處理與其他介面集合不同的最重要方式:

  • 無線行動裝置類別允許介面集合的巢狀數量有限。 特別是邏輯手部介面集合 (,也就是 WHCM 介面集合) 可以包含其他次級介面集合。 例如,WMCDC 相容的手機可以有 WHCM 介面集合,而該集合又包含抽象控件模型集合和 OBEX 集合。
  • 您可以將 USB 泛型父驅動程式設定為不列舉 WHCM 介面集合。 未列舉的 WHCM 介面集合會保持隱藏狀態,但泛型父驅動程式會使用聯集函式描述元 (UFD 的資訊,) 屬於 WHCM 介面集合來分組和列舉次級介面集合。
  • 您可以設定 USB 一般父驅動程式,針對 OBEX 控制模型介面集合 (PDO) 建立個別的實體裝置物件,或為所有 OBEX 控制模型介面集合建立單一 PDO。
  • UFD 中的介面編號清單可能會有間距。 也就是說,UFD 的介面編號可以參考不連續的介面。 例如,對於 USB介面關聯描述元 (IAD) 而言,這種類型的編號無效,其介面必須連續且具有序號。
  • UFD 可以包含相關的音訊介面集合
  • CDC 和 WMCDC 介面集合的硬體識別碼 (識別碼) 必須包含介面子類別。 其他USB介面,其硬體標識碼包含指定介面編號的 MI_%02X 後綴,不包含介面子類別的相關信息。 子類別資訊包含在硬體標識碼中,可讓廠商針對特定介面集合提供硬體標識符相符的 INF 檔案,而不是依賴描述元配置中的介面位置來判斷要載入集合的驅動程式。 硬體識別碼中的子類別資訊也允許從目前廠商提供的驅動程式逐步移轉路徑,以管理 WMCDC 介面集合到替代專案,例如使用者模式驅動程式。 如需如何格式化 USB 介面硬體識別碼的一般討論,請參閱 USB 裝置的識別碼

CDC 和 WMCDC 控制模型

CDC 和 WMCDC 控制模型一節說明 Microsoft Windows 操作系統中支援的介面集合屬性。 每個描述包括硬體和裝置標識碼的清單, (標識符,) USB 泛型父驅動程式為介面集合產生的識別碼。

Windows 支援的大多數介面集合都對應至屬於通訊裝置類別的控件模型, (CDC) 和無線行動通訊裝置類別 (WMCDC) ,但操作系統也支援舊版音訊和視訊介面集合,以及行動運算升級聯盟 (MCPC) 定義的介面集合。

本節所述的介面集合如下:

音訊類別介面

CDC 和 WMCDC 裝置上發生的 USB 音訊裝置類別介面集合具有下列屬性。

屬性 Description
參考 音訊裝置的通用序列總線裝置類別定義 1.0 版。
類別 介面集合中的所有介面都必須屬於音訊裝置類別 (0x01) 。
子類別 介面集合中的每個介面都必須有與集合中第一個介面不同的子類別。
通訊協定 無 (0x00) 。
Enumerated 是的
相關介面 屬於串流子類別 (0x02) 的零個或多個連續介面。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&MI_%02x
USB\Vid_%04x&Pid_%04x&MI_%02x

音訊介面集合的硬體標識碼不包含介面類別特定資訊。
相容的標識碼 USB\Class_01&SubClass_01&Prot_00
USB\Class_01&SubClass_01
USB\Class_01

音訊介面集合相容標識碼的格式包含介面類別、介面子類別和通訊協定的內嵌資訊。 針對 CDC 或 WMCDC 裝置上的音訊介面集合,介面類別為 01、子類別為 01,而通訊協定為 00。

CDC 抽象控制模型

ACM) 有兩個版本的抽象控件模型 (。 原始版本定義於 USB 通訊裝置類別 (CDC) 規格中。 USB 無線行動通訊裝置類別 (WMCDC) 規格包含 ACM 的擴充定義。

此頁面會說明符合 WMCDC 規格的介面集合。

符合 CDC 規格的介面集合具有下列屬性。

屬性 Description
參考 通訊裝置的通用序列總線類別定義,第3.6.2版。
主要介面的類別 通訊介面類別 (0x02) 。
主要介面的子類別 ACM (0x02) 。
通訊協定 任何。
Enumerated 是的
相關介面 聯集功能描述元 (UFD) 參考的一個數據類別介面和選擇性音訊類別介面。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_02&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_02
USB\Vid_%04x&Pid_%04x&Cdc_02&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_02
相容的標識碼 USB\Class_02&SubClass_02&Prot_%02X
USB\Class_02&SubClass_02
USB\Class_02
特殊處理 UFD 可以參考與 ACM 介面集合無關的音訊介面集合。

CDC ATM 網路控制模型

USB CDC ATM 網路控制模型 (ANCM) 介面集合具有下列屬性。

屬性 Description
參考 通訊裝置的通用序列總線類別定義,第1.1版,第3.8.3節
主要介面的類別 通訊介面類別 (0x02)
主要介面的子類別 ANCM (0x07)
通訊協定 無 (0x00)
Enumerated Yes
相關介面 聯集功能描述元參考的一個數據類別介面, (UFD)
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_07&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_07
USB\Vid_%04x&Pid_%04x&Cdc_07&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_07
相容的標識碼 USB\Class_02&SubClass_07&Prot_00
USB\Class_02&SubClass_07
USB\Class_02
特殊處理

CDC CAPI 控制模型

USB CDC Common ISDN API (CAPI) Control Model 介面集合具有下列屬性。

屬性 Description
參考 通訊裝置的通用序列總線類別定義,第1.1版,第3.7.2節
主要介面的類別 通訊介面類別 (0x02)
主要介面的子類別 CAPI (0x05)
通訊協定 無 (0x00)
Enumerated Yes
相關介面 聯集功能描述元 (UFD) 參考的一個數據類別介面。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_05&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_05
相容的標識碼 USB\Class_02&SubClass_05&Prot_00
USB\Class_02&SubClass_05
特殊處理

CDC 直接線路控制模型

(DLCM) 介面集合的 USB CDC 直接線路控制模型具有下列屬性。

屬性 Description
參考 通訊裝置的通用序列總線類別定義,第1.1版,第3.6.1節。
主要介面的類別 通訊介面類別 (0x02) 。
主要介面的子類別 DLCM (0x01) 。
通訊協定 無 (0x00) 。
Enumerated 是的
相關介面 聯集功能描述項 (UFD) 參考的音訊類別或廠商定義介面。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_01&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_01
USB\Vid_%04x&Pid_%04x&Cdc_01&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_01
相容的標識碼 USB\Class_02&SubClass_01&Prot_00
USB\Class_02&SubClass_01``USB\Class_02
特殊處理 UFD 會參考獨立列舉 DLCM 介面集合的音訊類別介面集合。

CDC 乙太網路控制模型

(ENCM) 介面集合的 USB CDC 乙太網路控制模型具有下列屬性。

屬性 Description
參考 通訊裝置的通用序列總線類別定義,第1.1版,第3.8.2節。
主要介面的類別 通訊介面類別 (0x02) 。
主要介面的子類別 ENCM (0x06) 。
通訊協定 無 (0x00) 。
Enumerated 是的
相關介面 聯集功能描述元 (UFD) 參考的一個數據類別介面。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_06&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_06
USB\Vid_%04x&Pid_%04x&Cdc_06&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_06
相容的標識碼 USB\Class_02&SubClass_06&Prot_00
USB\Class_02&SubClass_06
USB\Class_02
特殊處理 此控件模型的相容標識碼在 Microsoft 提供的 INF 檔案中具有相符專案。 如果操作系統在廠商提供的 INF 檔案中找不到其中一個硬體識別碼的相符專案,系統會自動載入原生 NDIS 迷你埠驅動程式來管理介面集合。

CDC 多通道 ISDN 控制模型

USB CDC 多通道 ISDN 控制模型 (MCCM) 介面集合具有下列屬性。

屬性 Description
參考 通訊裝置的通用序列總線類別定義,第1.1版,第3.7.1節
主要介面的類別 通訊介面類別 (0x02)
主要介面的子類別 MCCM (0x04)
通訊協定 無 (0x00)
Enumerated Yes
相關介面 聯集功能描述元 (UFD) 參考的多個數據類別介面。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_04&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_04
USB\Vid_%04x&Pid_%04x&Cdc_04&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_04
相容的標識碼 USB\Class_02&SubClass_04&Prot_00
USB\Class_02&SubClass_04
USB\Class_02
特殊處理

CDC 電話控制模型

(TCM) 介面集合的 USB CDC 電話控制模型具有下列屬性。

屬性 Description
參考 通訊裝置的通用序列總線類別定義,第1.1版,第3.6.3節。
主要介面的類別 通訊介面類別 (0x02) 。
主要介面的 SubClass TCM (0x03) 。
通訊協定 任何。
Enumerated 是的
相關介面 聯集功能描述元 (UFD) 參考的音訊類別介面。
硬體識別碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_03&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_03
USB\Vid_%04x&Pid_%04x&Cdc_03&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_03
相容的標識碼 USB\Class_02&SubClass_03&Prot_%02X
USB\Class_02&SubClass_03
USB\Class_02
特殊處理 UFD 可以參考與 TCM 介面集合無關的音訊類別介面集合。

MCPC 廠商唯一介面

行動運算升級聯盟 (MCPC) 在無線行動通訊裝置類別 (WMCDC) 規格之前,定義了介面集合的格式,提供廠商唯一 CDC 裝置的格式。 因此,MCPC 介面集合不符合 WMCDC 標準。

不過,如果已啟用 WMCDC,USB 泛型父驅動程式可以列舉 MCPC 介面集合。 MCPC 介面集合具有下列屬性。

屬性 Description
參考 行動運算升級聯盟 (MCPC) GL-004 規格
類別 CDC (0x02)
子類別 0x88
通訊協定 無 (0x00)
Enumerated Yes
相關介面 聯集功能描述項 (UFD) 參考的零個或多個數據類別介面
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_88&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_88
USB\Vid_%04x&Pid_%04x&Cdc_88&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_88
相容的標識碼 USB\Class_02&SubClass_88&Prot_00
USB\Class_02&SubClass_88
USB\Class_02
特殊處理

視訊類別介面

CDC 和 WMCDC 裝置上發生的 USB 視訊裝置類別介面集合具有下列屬性。

屬性 Description
參考 視訊裝置 1.0 版的通用序列總線裝置類別定義
類別 影片 (0x0E) 。
子類別 視訊控件 (0x01) 。
通訊協定 無 (0x00) 。
Enumerated 是的
相關介面 屬於串流子類別 (0x02) 的零個或多個連續介面。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&MI_%02x
USB\Vid_%04x&Pid_%04x&MI_%02x
相容的標識碼 USB\Class_0E&SubClass_01&Prot_00
USB\Class_0E&SubClass_01
USB\Class_0E
特殊處理 影片類別介面集合會在 CDC 裝置上接收特殊處理。 在非 CDC 裝置上,視訊類別介面集合是由介面關聯描述元所定義, (IAD) 。 在 CDC 裝置上,視訊類別介面集合是由聯集功能描述元 (UFD) 所定義。

WMCDC 抽象控件模型

ACM) 有兩個版本的抽象控件模型 (。 原始版本定義於 USB 通訊裝置類別 (CDC) 規格中。 USB 無線行動通訊裝置類別 (WMCDC) 規格包含 ACM 的擴充定義。 包含傳真/數據機函式的 ACM 集合應該使用 ACM 的 WMCDC 定義,而不是原始 CDC ACM 定義。

此頁面會說明符合CDC規格的介面集合。

符合 WMCDC 規格的介面集合具有下列屬性。

屬性 Description
參考 無線行動通訊裝置 1.0 版第 6.2 節的通用序列總線 CDC 子類別規格
主要介面的類別 通訊介面類別 (0x02) 。
主要介面的子類別 ACM (0x02) 。
通訊協定 如果集合使用 AT 命令集通訊協定,則會0x01內嵌在相容標識碼中的通訊協定值。 如果集合使用 WMCDC 規格所描述的其中一個通訊協定,則內嵌在相容標識碼中的通訊協定值會透過0x06或0xFE 0x2。
Enumerated 是的
相關介面 聯集功能描述元 (UFD) 參考的一個數據類別介面。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_Modem&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_Modem
USB\Vid_%04x&Pid_%04x&Cdc_Modem&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_Modem
相容的標識碼 USB\Class_02&SubClass_Modem&Prot_%02X
USB\Class_02&SubClass_Modem
USB\Class_02
特殊處理 UFD 可能會參考獨立於 ACM 介面集合所列舉的音訊介面集合。

介面集合必須符合 WMCDC 規格第 6.2 節中指定的特殊描述元和端點需求。 如果介面集合不符合 WMCDC 需求,但介面符合 CDC 需求,USB 泛型父驅動程式會列舉介面集合和具有 CDC 格式的一般硬體識別碼。

此控件模型的相容標識碼在 Microsoft 提供的 INF 檔案中具有相符專案。 如果操作系統在廠商提供的 INF 檔案中找不到其中一個硬體識別碼的相符專案,則系統會自動載入原生電話語音應用程式開發介面, (TAPI) 數據機篩選驅動程式來管理數據機函式,並設定適當的 TAPI 登錄設定,除非通訊協定程式代碼0xFE。 如果通訊協定程式代碼0xFE,廠商必須提供裝置或類別共同安裝程式,才能正確填入TAPI登錄設定。

WMCDC 裝置管理模型

USB WMCDC 裝置管理模型 (DMM) 介面集合具有下列屬性。

屬性 Description
參考 無線行動通訊裝置 1.0 版第 6.6 節的通用序列總線 CDC 子類別規格
主要介面的類別 通訊介面類別 (0x02) 。
主要介面的子類別 DMM (0x09) 。
通訊協定 任何。
Enumerated 是的
相關介面 無。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_09&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_09
USB\Vid_%04x&Pid_%04x&Cdc_09&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_09
相容的標識碼 USB\Class_02&SubClass_09&Prot_%02X
USB\Class_02&SubClass_09
USB\Class_02
特殊處理 此控件模型不會使用等位功能描述元 (UFD) 。

WMCDC 行動直接線路模型

USB WMCDC 行動直接線路模型 (MDLM) 介面集合具有下列屬性:

屬性 Description
參考 無線行動通訊裝置的通用序列總線 CDC 子類別規格,版本 1.0,第 6.7 節
主要介面的類別 通訊介面類別 (0x02)
主要介面的子類別 MDLM (0x0A)
通訊協定 任何
Enumerated Yes
相關介面 聯集功能描述元 (UFD) 參考的一或多個數據類別介面
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0A&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0A
USB\Vid_%04x&Pid_%04x&Cdc_0A&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_0A
相容的標識碼 USB\Class_02&SubClass_0A&Prot_%02X
USB\Class_02&SubClass_0A
USB\Class_02
特殊處理 無。

WMCDC OBEX 控件模型 (多個 PDO)

有兩種方式可以列舉物件 Exchange 通訊協定 (OBEX) 控制模型介面集合:USB 泛型父驅動程式可以將所有 OBEX 介面群組在一起,並針對所有 OBEX 介面建立單一實體裝置物件 (PDO) ,或父驅動程式可以為每個 OBEX 介面建立個別的 PDO。

當USB泛型父驅動程式將個別的 PDO 指派給每個 OBEX 介面時,PDO 具有下列屬性。

屬性 Description
參考 無線行動通訊裝置的通用序列總線 CDC 子類別規格,第 1.0 版,第 6.5 節。
主要介面的類別 通訊介面類別 (0x02) 。
主要介面的子類別 OBEX (0x0B) 。
通訊協定 無 (0x00) 。
Enumerated 是的
相關介面 聯集功能描述元 (UFD) 參考的一個數據類別介面。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0B&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0B
USB\Vid_%04x&Pid_%04x&Cdc_0B&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_0B
相容的標識碼 USB\Class_02&SubClass_0B&Prot_00
USB\Class_02&SubClass_0B
USB\Class_02
特殊處理 與管理複合裝置之 USB 泛型父驅動程式實例相關聯的登錄設定會判斷 OBEX 介面是使用單一 PDO 或多個 PDO 來管理。

單一 PDO) (WMCDC OBEX 控制件模型

有兩種方式可以列舉物件 Exchange 通訊協定 (OBEX) 控制模型介面集合:USB 泛型父驅動程式可以將所有 OBEX 介面群組在一起,併為所有 OBEX 介面建立單一實體裝置物件 (PDO) ,或父驅動程式可以為每個 OBEX 介面建立個別的 PDO。

當USB泛型父驅動程式將單一 PDO 指派給所有 OBEX 介面時,PDO 具有下列屬性。

屬性 Description
參考 無線行動通訊裝置的通用序列總線 CDC 子類別規格,第 1.0 版,第 6.5 節。
主要介面的類別 通訊介面類別 (0x02) 。
主要介面的子類別 OBEX (0x0B) 。
通訊協定 無 (0x00) 。
Enumerated 是的
相關介面 聯集功能描述元 (UFD) 參考的一個數據類別介面。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&WPD_OBEX&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&WPD_OBEX
USB\Vid_%04x&Pid_%04x&WPD_OBEX&MI_%02x
USB\Vid_%04x&Pid_%04x&WPD_OBEX
相容的標識碼 USB\Class_02&WPD_OBEX
USB\Class_02
特殊處理 與管理複合裝置之 USB 泛型父驅動程式實例相關聯的登錄設定會判斷 OBEX 介面是使用單一 PDO 或多個 PDO 來管理。 如需指定 USB 泛型父驅動程式如何列舉 OBEX 介面的登錄設定說明,請參閱 USB 複合裝置上的介面集合列舉

WMCDC 無線手機控制模型

USB 一般父驅動程式不一定會列舉無線手機控制模型, (WHCM) 介面集合。 與管理 WHCM 介面集合之 USB 泛型父驅動程式實例相關聯的登錄設定會判斷 USB 泛型父驅動程式是否建立實體裝置物件, (介面集合的 PDO) 。 如需指定 USB 泛型父驅動程式如何列舉 WHCM 介面的登錄設定說明,請參閱 USB 複合裝置上的介面集合列舉

列舉的 WHCM 介面集合具有下列屬性。

屬性 Description
參考 無線行動通訊裝置 1.0 版第 6.1 節的通用序列總線 CDC 子類別規格
主要介面的類別 通訊介面類別 (0x02) 。
主要介面的子類別 WHCM (0x08) 。
通訊協定 無 (0x00) 。
Enumerated 是的
相關介面 無。
硬體標識碼 USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_08&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_08
USB\Vid_%04x&Pid_%04x&Cdc_08&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_08
相容的標識碼 USB\Class_02&SubClass_08&Prot_00
USB\Class_02&SubClass_08
USB\Class_02
特殊處理 聯集功能描述元 (UFD) 會識別與邏輯手機相關聯的介面。

上述主題中的硬體識別碼格式描述使用下列慣例:

  • C 語言 printf 格式代表整數。 例如,“%04x” 表示 4 位數的十六進位整數,“%02x” 表示 2 位數的十六進位整數等等。
  • 字串 「Vid_」 後面的整數是廠商程式代碼的 4 位數十六進位表示法,USB 委員會 (<www.usb.org>) 指派給廠商。
  • 字串 「Pid_」 後面的整數是廠商指派給裝置之產品名稱的 4 位數十六進位表示法。
  • 字串 “Rev_” 後面的整數是裝置修訂編號的 4 位數十六進位表示法。
  • 字串 「Cdc_」 後面的整數是介面子類別。
  • 字串 「Prot_」 後面的整數是通訊協定編號。
  • 字串 「MI_」 後面的整數是介面編號的 2 位數十六進位表示法,它會從介面描述元的 bInterfaceNumber 欄位擷取。

使用 IAD 的 USB 裝置上的介面集合列舉

如果USB複合裝置在其韌體中具有介面關聯描述元 (IAD) ,Windows 會列舉介面集合,就像每個集合都是單一裝置,並將單一實體裝置 (物件指派給 PDO) 到每個介面集合,並將硬體與相容標識符關聯 (標識符與 PDO) 關聯。 如需 IAD 的詳細描述,請參閱 USB 介面關聯描述元。 本節說明指派給與 IAD 相關聯之介面集合 (標識碼的硬體標識碼和兼容標識碼) 。

具有 IAD 之 USB 裝置的硬體識別碼

USB\VID_v(4)&PID_p(4)&Rev_r(4)&MI_z(2)

USB\VID_v(4)&PID_p(4)&MI_z(2)

在這些硬體標識碼中,

  • v (4) 是 USB 委員會指派給廠商的四位數廠商代碼,並從裝置描述元的 idVendor 字段擷取。
  • p (4) 是廠商指派給裝置且從裝置描述元的 idProduct 字段擷取的四位數產品名稱。
  • r (4) 是二進位編碼十進位修訂中的四位數裝置版本號碼,廠商指派給裝置,並從裝置描述元的 bcdDevice 字段擷取。
  • z (2) 是從 IAD 的 bFirstInterface 欄位擷取的兩位數介面編號。

具有 IAD 的 USB 裝置相容標識碼

USB\Class_c(2)&SubClass_s(2)&Prot_p(2)

USB\Class_c(2)&SubClass_s(2)

USB\Class_c(2)

在這些相容的標識符中,c (2) 、s (2) 和 p (2) 分別包含從 iAD 的 bFunctionClass、bFunctionSubClassbFunctionProtocol 字段取用的值。

您無法以遞歸方式使用 IAD 來系結函式的函式。 特別是,如果裝置在其韌體中有 IAD 描述元,泛型父驅動程式將不會依音訊裝置類別將介面分組,如 USB 複合裝置上的介面集合列舉中所述。

在沒有 IAD 的音訊裝置上列舉介面集合

針對音訊裝置,即使裝置沒有介面關聯描述元 (IAD) ,Windows 操作系統也可以列舉與函式相關聯的介面群組 () ,並將單一實體裝置物件指派給每個群組 (PDO) 。

如果介面符合下列條件,操作系統會將複合音訊裝置的介面分組為介面集合:

  • 介面集合中的所有介面都必須連續。 換句話說,介面必須在韌體內存中彼此相鄰。
  • 介面集合中的所有介面都必須屬於音訊裝置類別。 裝置製造商指定介面屬於音訊裝置類別,方法是將值指派給介面描述元的 bInterfaceClass 字段0x01。
  • 介面集合中的每個介面都必須有與集合中第一個介面不同的子類別。介面描述項的 bInterfaceSubClass 欄位會指定介面的裝置子類別。

如果介面不符合這三個條件,Windows 會嘗試個別列舉它,而不是與其他音訊類別介面進行分組。

如果介面關聯描述元 (IAD) 存在於裝置韌體中,操作系統就不會以特殊方式將音訊類別介面分組。 IAD 方法一律是分組 USB 介面的慣用方法。

本節說明與操作系統針對介面屬於音訊裝置類別之介面集合所建立之 PDO 相關聯的硬體和相容標識碼) (標識符。

沒有 IAD 的音訊裝置硬體識別碼

USB\VID_v(4)&PID_p(4)&Rev_r(4)&MI_z(2)

USB\VID_v(4)&PID_p(4)&MI_z(2)

在這些硬體標識碼中,

  • v (4) 是 USB 標準委員會指派給廠商的四位數廠商程式代碼,並從裝置描述元的 idVendor 字段擷取。
  • p (4) 是廠商指派給裝置且從裝置描述元的 idProduct 字段擷取的四位數產品名稱。
  • r (4) 是二進位編碼十進位修訂中的四位數裝置版本號碼,廠商指派給裝置,並從裝置描述元的 bcdDevice 字段擷取。
  • z (2) 是從介面描述元 的 bInterfaceNumber 字段擷取的兩位數介面編號。

沒有 IAD 的音訊裝置相容標識碼

USB\Class_c(2)&SubClass_s(2)&Prot_p(2)

USB\Class_c(2)&SubClass_s(2)

USB\Class_c(2)

在這些相容的標識符中,c (2) 、s (2) 和 p (2) 分別包含從 bInterfaceClassbInterfaceSubClassbInterfaceProtocol 字段取用的每個介面集合中第一個 USB 介面描述符的值。