USB 複合裝置上的介面集合列舉概觀
複合USB裝置上的介面可以分組在集合中。 USB 泛型父驅動程式 (Usbccgp.sys) 可以透過四種方式列舉介面集合。
這些四種介面集合列舉方法會以下列方式以階層方式排列:
廠商提供的回呼例程
如果廠商已向 USB 泛型父驅動程式註冊回呼例程 (Usbccgp.sys),泛型父驅動程式會優先於回呼例程,並允許回呼例程將介面分組,而不是使用其他方法。 如需使用廠商提供的回呼例程列舉介面集合的詳細資訊,請參閱 USB 複合裝置上的介面集合列舉。
聯集功能描述元
. 如果廠商已在 USB 泛型父驅動程式中啟用 CDC 和 WMCDC 列舉,泛型父驅動程式會使用 等位功能描述元 (UFD) 將介面分組到集合中。 啟用時,這個方法的優先順序高於所有其他方法,但廠商提供的回呼例程除外。
介面關聯描述元
如果 介面關聯描述元 (IAD) 存在,USB 泛型父驅動程式一律會使用 IAD 將介面分組,而不是使用舊版方法。 Microsoft建議廠商使用 IAD 來定義介面集合。
舊版音訊方法
USB 泛型父驅動程式可以使用保留給音訊函式的舊版技術來列舉介面集合。 如果裝置上有任何 IAD,泛型父驅動程式就不會使用這個方法。
自定義複合裝置介面集合的列舉
某些 USB 裝置具有 USB 介面關聯描述元 (IAD) 無法描述的介面集合。 在 Windows Vista 和更新版本的作業系統中,廠商可以自定義 USB 一般父驅動程式 (Usbccgp.sys) 定義和列舉裝置介面集合的方式。 這是透過 篩選驅動程式中的列舉回呼例程 來完成。 回呼例程可協助泛型父驅動程式定義裝置的自定義介面集合。
若要讓泛型父驅動程式定義自定義介面集合,複合裝置的廠商必須:
- 實作列舉回呼例程 (USBC_START_DEVICE_CALLBACK)。
- 在USB裝置組態介面中提供回呼例程的指標(USBC_DEVICE_CONFIGURATION_INTERFACE_V1的 StartDeviceCallback 成員)。
- 提供符合複合裝置裝置裝置識別碼的 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 裝置的功能。 例如,您可以使用 Windows 電話語音應用程式介面 (TAPI) 子系統來管理裝置的語音和數據/傳真數據機功能,以及 Windows 網路適配器介面規格 (NDIS) 子系統來管理裝置的乙太網路功能。 此外,您可以透過 WinUSB (Winusb.sys) 的協助,在使用者模式軟體中管理某些函式,例如物件交換通訊協定 (OBEX) 函式。
此影像顯示 WMCDC 裝置的範例驅動程式堆疊。
在上圖中,WMCDC 裝置包含單一邏輯手機:OBEX 函式和數據機功能。 廠商提供的 INF 檔案會載入原生 Windows 驅動程式來管理數據機。 OBEX 函式是由廠商提供的使用者模式驅動程式所管理,該驅動程式會在使用者模式驅動程序架構 (UMDF) 中執行。 使用者模式驅動程式會使用 Windows 可攜式裝置 (WPD) 通訊協定來與使用者應用程式通訊,以及 WinUSB for Developers 簡介導出以與 USB 堆棧通訊的介面。 一般而言,廠商提供的 INF 檔案會針對使用 Winusb.sys 的每個介面集合載入個別的 Winusb.sys 實例。
登錄設定
USB 堆疊不會自動支援 WMCDC。 您必須提供載入 Usbccgp.sys 實例的 INF 檔案。 INF 檔案必須包含 AddReg 區段,這個區段會將與Usbccgp.sys相關聯的軟體機碼中的 EnumeratorClass 登錄值設定為從三個數位建構的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 檔案中以十六進位陣列表示的三個 1 位元組二進位值所建構:02、00 和 00。 這三個數位分別對應到 USB 實作者論壇指派給 CDC 裝置類別、CDC 裝置子類別和 CDC 裝置通訊協定的值。
下列主題會進一步說明 WMCDC:
列舉 WMCDC 上的介面集合
USB 無線行動通信裝置類別 (WMCDC) 是 USB 通訊裝置類別 (CDC) 的子類別。 WMCDC 規格會擴充,但不會大幅變更定義介面集合的 CDC 指導方針。 特別是 WMCDC 裝置必須符合定義介面集合的 CDC 指導方針。
CDC 介面集合包含屬於通訊介面類別 () 或數據介面類別 () 的主要介面 (bInterfaceClass = 0x02
USB_INTERFACE_DESCRIPTOR)。bInterfaceClass = 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 組 態。
上圖中的無線手機控制模型(WHCM)介面集合包含三個次級介面集合(bSubordinateInterface):兩個 OBEX 集合和數據機集合。 CdcFlags 的位 0 為 0,因此 USB 一般父驅動程式不會為 WHCM 介面集合建立 PDO。 CdcFlags 的位 1 為 0,因此 USB 一般父驅動程式會為每個 OBEX 介面集合產生個別的 PDO。
下圖說明當設定 CdcFlags 的位 0 和位 1 時,PDO 組態。
由於 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 介面集合會保持隱藏,但泛型父驅動程式會使用屬於 WHCM 介面集合的等位函式描述元 (UFDs) 中的資訊來分組和列舉次級介面集合。
- 您可以設定 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) 的控制模型,但操作系統也支援舊版音訊和視訊介面集合,以及 Mobile Computing Promotion Consortium (MCPC) 所定義的介面集合。
本節所述的介面集合如下:
音訊類別介面
CDC 和 WMCDC 裝置上發生的 USB 音訊裝置類別介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 音訊裝置的通用序列總線裝置類別定義,版本 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 規格的介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 通訊裝置的通用序列總線類別定義,第1.1版,第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) 介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 通訊裝置的通用序列總線類別定義,第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 通用 ISDN API (CAPI) 控制模型介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 通訊裝置的通用序列總線類別定義,第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 直接線路控制模型
USB CDC 直接線路控制模型 (DLCM) 介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 通訊裝置的通用序列總線類別定義,版本 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 乙太網路控制模型
USB CDC 乙太網路控制模型 (ENCM) 介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 通訊裝置的通用序列總線類別定義,版本 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) 介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 通訊裝置的通用序列總線類別定義,第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 電話控制模型
USB CDC 電話控制模型 (TCM) 介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 通訊裝置的通用序列總線類別定義,版本 1.1,第 3.6.3 節。 |
主要介面的類別 | 通訊介面類別(0x02)。 |
主要介面的子類別 | 中醫(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 廠商唯一介面
在無線行動通信裝置類別(WMCDC)規格為廠商唯一 CDC 裝置提供格式之前,行動運算推廣聯盟(MCPC)為介面集合定義了格式。 因此,MCPC 介面集合不符合 WMCDC 標準。
不過,如果啟用 WMCDC,USB 泛型父驅動程式可以列舉 MCPC 介面集合。 MCPC 介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | Mobile Computing Promotion Consortium (MCPC) GL-004 規格 |
類別 | CDC (0x02) |
子類別 | 0x88 |
通訊協定 | 無(0x00) |
Enumerated | Yes |
相關介面 | 聯集功能描述元參考的零個或多個數據類別介面 |
硬體標識碼 | 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 視訊裝置類別介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 影片裝置 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 裝置上,視訊類別介面集合是由介面關聯描述元 (IADs) 所定義。 在 CDC 裝置上,視訊類別介面集合是由等位功能描述元 (UFD) 所定義。 |
WMCDC 抽象控件模型
抽象控件模型有兩個版本(ACM)。 原始版本定義於 USB 通訊裝置類別 (CDC) 規格中。 USB 無線行動通訊裝置類別 (WMCDC) 規格包含 ACM 的擴充定義。 包含傳真/數據機函式的 ACM 集合應該使用 ACM 的 WMCDC 定義,而不是原始 CDC ACM 定義。
此頁面會說明符合CDC規格的介面集合。
符合 WMCDC 規格的介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 無線行動通訊裝置 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) 介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 無線行動通訊裝置 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) 介面集合具有下列屬性:
屬性 | 說明 |
---|---|
參考 | 無線行動通訊裝置通用序列總線 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)
有兩種方式可以列舉物件交換通訊協定 (OBEX) 控制模型介面集合:USB 一般父驅動程式可以將所有 OBEX 介面群組在一起,併為所有 OBEX 介面建立單一實體裝置物件 (PDO),或父驅動程式可以為每個 OBEX 介面建立個別的 PDO。
當USB一般父驅動程式將個別 PDO 指派給每個 OBEX 介面時,PDO 具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 無線行動通訊裝置 1.0 版第 6.5 節的通用序列總線 CDC 子類別規格。 |
主要介面的類別 | 通訊介面類別(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 來管理。 |
WMCDC OBEX 控制模型 (單一 PDO)
有兩種方式可以列舉物件交換通訊協定 (OBEX) 控件模型介面集合:USB 泛型父驅動程式可以將所有 OBEX 介面群組在一起,併為所有 OBEX 介面建立單一實體裝置物件 (PDO),或父驅動程式可以為每個 OBEX 介面建立個別的 PDO。
當USB一般父驅動程式將單一 PDO 指派給所有 OBEX 介面時,PDO 具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 無線行動通訊裝置 1.0 版第 6.5 節的通用序列總線 CDC 子類別規格。 |
主要介面的類別 | 通訊介面類別(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 介面集合具有下列屬性。
屬性 | 說明 |
---|---|
參考 | 無線行動通訊裝置 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_」 後面的整數是 USB 委員會 (<www.usb.org>) 指派給廠商之廠商代碼的 4 位數十六進位表示法。
- 字串 「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、bFunctionSubClass 和 bFunctionProtocol 字段取得的值。
您無法以遞歸方式使用 IAD 來系結函式的函式。 特別是,如果裝置在其韌體中有 IAD 描述元,泛型父驅動程式將不會依音訊裝置類別將介面分組,如 USB 複合裝置上的介面集合列舉中所述。
在沒有 IAD 的音訊裝置上列舉介面集合
針對音訊裝置,Windows 操作系統可以列舉與函式相關聯的介面(介面集合)群組,並將單一實體裝置物件 (PDO) 指派給每個群組,即使裝置沒有介面關聯描述元 (IAD)。
如果介面符合下列條件,操作系統會將複合音訊裝置的介面分組為介面集合:
- 介面集合中的所有介面都必須是連續的。 換句話說,介面必須在韌體內存中彼此相鄰。
- 介面集合中的所有介面都必須屬於音訊裝置類別。 裝置製造商指定介面屬於音訊裝置類別,方法是將0x01值指派給 介面描述元的 bInterfaceClass 字段。
- 介面集合中的每個介面都必須有與集合中第一個介面不同的子類別。介面 描述元的 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) 分別包含取自每個介面集合中第一個 USB 介面描述元的 bInterfaceClass、bInterfaceSubClass 和 bInterfaceProtocol 字段的值。