共用方式為


USB 介面關聯描述元

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

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

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

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

如何使用 IAD

下列小節說明如何使用 IAD 的相關資訊。

複合裝置在韌體中向 Windows 發出 IAD (介面關聯描述符) 警示

複合裝置的製造商通常會將零值指派給裝置描述元中的裝置類別 (bDeviceClass) 、子類別 (bDeviceSubClass) 和通訊協定 (bDeviceProtocol) 欄位,如 通用序列匯流排規格所指定。 製造商可以將每個單獨的接口與不同的設備類別和協議相關聯。

USB-IF 核心團隊設計了一個特殊的類別和協定代碼集,通知作業系統裝置韌體中存在一個或多個 IAD。 裝置描述元必須具有下表中顯示的值,否則作業系統無法偵測到裝置的 IAD 或正確地將裝置的介面分組。

裝置描述元欄位 必填值
bDeviceClass 0xEF
bDeviceSubClass 0x02
bDeviceProtocol 0x01

程式代碼值會提示不支援 IAD 的 Windows 版本,以安裝能正確枚舉裝置的專用匯流排驅動程式。 如果裝置描述元中沒有這些代碼,系統可能無法列舉裝置,或裝置可能無法正常運作。

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

IAD 的函式類別 (bFunctionClass) 、子類別 (bFunctionSubclassClass) 和通訊協定 (bFunctionProtocol) 欄位必須包含描述函式中介面的 USB 裝置類別所指定的值。

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

IAD 欄位 對應介面欄位
bFunctionClass bInterfaceClass
bFunctionSubclass bInterfaceSubClass

IAD 的 bFirstInterface 欄位指出函式中第一個介面的編號。 IAD 的 bInterfaceCount 欄位指出介面集合中有多少個介面。 IAD 介面集合中的介面必須是連續的 (介面號碼清單中不能有間隙) ,因此具有第一個介面號碼的計數足以指定集合中的所有介面。

存取 IAD 的內容

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

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

USB 介面關聯描述元範例

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

視頻課程功能

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

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

人工輸入裝置 (HID) 功能

此函式僅包含介面二 (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 端點描述元

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