共用方式為


USB 介面關聯描述項

USB 介面關聯描述元 (IAD) 可讓裝置將屬於函式的介面分組。 本文說明客戶端驅動程式如何判斷裝置是否包含函式的IAD。

通用序列總線規格 2.0 版不支援在單一函式內將複合裝置的多個介面分組。 不過,USB 裝置工作群組 (DWG) 建立允許具有多個介面之函式的 USB 裝置類別。 USB 實作者的論壇發出工程變更通知, (ECN) 定義群組介面的機制。

ECN 會指定稱為介面關聯描述元的 USB 描述項, (IAD) ,讓硬體製造商定義介面的群組。 最有可能使用 IAD 的裝置類別包括:

  • USB 視訊類別規格 (類別程式代碼 - 0x0E)
  • USB 音訊類別規格 (類別程式代碼 - 0x01)
  • USB 藍牙類別規格 (類別程式代碼 - 0xE0)

如何使用 IAD

下列小節描述如何使用IAD的資訊。

複合裝置會警示韌體中 IAD 的 Windows

複合裝置製造商通常會將零的值指派給裝置類別, (bDeviceClass) 、子類別 (bDeviceSubClass) ,以及由通用序列總線規格所指定的通訊協定 (bDeviceProtocol) 字段。 製造商可以將每個個別介面與不同的裝置類別和通訊協定產生關聯。

USB-IF 核心小組設計了特殊的類別和通訊協定程序代碼集,通知操作系統有一或多個 IAD 存在於裝置韌體中。 裝置描述項必須具有出現在下表中的值,或操作系統不會正確偵測裝置的 IAD 或將裝置的介面分組。

裝置描述項欄位 必要值
bDeviceClass 0xEF
bDeviceSubClass 0x02
bDeviceProtocol 0x01

不支援 IAD 的 Windows 程式代碼值警示版本,以安裝正確列舉裝置的特殊用途總線驅動程式。 如果沒有裝置描述元中的這些代碼,系統可能無法列舉裝置,或裝置可能無法正常運作。

裝置可以有多個 IAD。 每個 IAD 都必須緊接在 IAD 所描述介面群組中的介面之前。

函式類別 (bFunctionClass) 、子類別 (bFunctionSubclassClass) (,以及 IAD 的 bFunctionProtocol) 字段,必須包含描述函式中介面的 USB 裝置類別所指定的值。

IAD 的類別和子類別欄位不需要符合 IAD 所描述介面集合中介面的類別和子類別欄位。 Microsoft 建議集合的第一個介面具有符合 IAD 類別和子類別欄位的類別和子類別字段。 下表指出哪些欄位應該相符。

IAD 欄位 對應的介面欄位
bFunctionClass bInterfaceClass
bFunctionSubclassClass bInterfaceSubClass

IAD 的 bFirstInterface 字段表示函式中第一個介面的數目。 IAD 的 bInterfaceCount 字段會指出介面集合中的介面數目。 IAD 介面集合中的介面必須是連續的 () 介面編號清單中沒有間距,因此具有第一個介面編號的計數就足以指定集合中的所有介面。

存取 IAD 的內容

用戶端驅動程式無法直接存取 IAD 描述項。 IAD 工程變更通知 (ECN) 指定裝置從主機軟體收到設定描述元的要求時,必須在設定資訊中包含 IAD, (GetDescriptor 設定) 。 主機軟體無法使用 GetDescriptor 要求直接擷取 IAD。

不過,客戶端驅動程式可以查詢 USB 裝置的父驅動程式,以取得裝置的硬體識別碼 (標識碼) ,而裝置的硬體識別元包含 IAD 字段的內嵌資訊。

USB 介面關聯描述項範例

本節說明複合 USB 裝置的描述項配置。 範例裝置有兩個功能:

影片類別函式

IAD (介面關聯描述元) 定義此函式。 函式包含兩個介面:介面零 (0) 和介面 1 (1) 。

系統會為函式產生硬體和相容的標識碼 (標識碼) ,如 支援無線行動通訊裝置類別中所述。 OS 符合適當的 INF 檔案之後,系統會載入視訊類別驅動程式堆疊。

人類輸入設備 (HID) 函式

此函式只包含介面 2 (2) 。

系統會產生函式的硬體與相容標識符,如 USB 複合裝置上的介面集合列舉中所述。 在 OS 符合適當的 INF 檔案之後,系統會將人類輸入設備載入 (HID) 類別驅動程式。

描述項如下所示:

裝置描述元

    BYTE  bLength            0x12
    BYTE  bDescriptorType    0x01
    WORD  bcdUSB             0x0200
    BYTE  bDeviceClass       0xEF
    BYTE  bDeviceSubClass    0x02
    BYTE  bDeviceProtocol    0x01
    BYTE  bMaxPacketSize0    0x40
    WORD  idVendor           0x045E
    WORD  idProduct          0xFFFF
    WORD  bcdDevice          0x0100
    BYTE  iManufacturer      0x01
    WORD  iProduct           0x02
    WORD  iSerialNumber      0x02
    BYTE  bNumConfigurations 0x01

組態描述項

    BYTE  bLength             0x09
    BYTE  bDescriptorType     0x02
    WORD  wTotalLength        0x...
    BYTE  bNumInterfaces      0x03
    BYTE  bConfigurationValue 0x01
    BYTE  iConfiguration      0x01
    BYTE  bmAttributes        0x80    // (BUS Powered)
    BYTE  bMaxPower           0x19    // (50 mA)

介面關聯描述項

    BYTE  bLength           0x08
    BYTE  bDescriptorType   0x0B
    BYTE  bFirstInterface   0x00
    BYTE  bInterfaceCount   0x02
    BYTE  bFunctionClass    0x0E
    BYTE  bFunctionSubClass 0x03
    BYTE  bFunctionProtocol 0x00
    BYTE  iFunction         0x04

影片控制介面描述項

    BYTE  bLength            0x09
    BYTE  bDescriptorType    0x04
    BYTE  bInterfaceNumber   0x00
    BYTE  bAlternateSetting  0x00
    BYTE  bNumEndpoints      0x01
    BYTE  bInterfaceClass    0x0E
    BYTE  bInterfaceSubClass 0x01
    BYTE  bInterfaceProtocol 0x00
    BYTE  iInterface         0x05

視訊控件類別特定的描述元

    . . . .
    . . . .
    . . . .

影片控制端點描述項

    . . . .
    . . . .
    . . . .

影片串流介面描述項

    BYTE  bLength            0x09
    BYTE  bDescriptorType    0x04
    BYTE  bInterfaceNumber   0x01
    BYTE  bAlternateSetting  0x00
    BYTE  bNumEndpoints      0x01
    BYTE  bInterfaceClass    0x0E
    BYTE  bInterfaceSubClass 0x02
    BYTE  bInterfaceProtocol 0x00
    BYTE  iInterface         0x06

視訊串流類別特定描述元

    . . . .
    . . . .
    . . . .

影片串流端點描述項

    . . . .
    . . . .
    . . . .

(HID) 介面描述元的人類輸入設備

    BYTE  bLength            0x09
    BYTE  bDescriptorType    0x04
    BYTE  bInterfaceNumber   0x02
    BYTE  bAlternateSetting  0x00
    BYTE  bNumEndpoints      0x01
    BYTE  bInterfaceClass    0x03
    BYTE  bInterfaceSubClass 0x01
    BYTE  bInterfaceProtocol 0x01
    BYTE  iInterface         0x07

HID 類別特定描述元

    . . . .
    . . . .
    . . . .

HID 端點描述元

    . . . .
    . . . .
    . . . .