從 USB 取得描述元和端點

usb 類別包含數個子類別,可存取 USB 裝置的介面、描述元和端點。包含的子類別如下:

USB 描述元會回報裝置的所有屬性。端點是特定類型的描述元,用於描述主機和裝置之間的通訊流程終點。

InterfaceList 類別會逐一檢查 USB 裝置中的每個 Interface。每個 Interface 包含:

  • DescriptorList到GetDescriptorList()
  • EndpointList 到 GetEndpointList()

這些方法可存取介面的所有描述元和端點。

圖 1 顯示這些子類別的階層。

USB 類別階層圖

圖 1

範例

從 USB 接收描述元

這些範例會逐一疊代 USB 裝置中的所有描述元。這個範例會疊代所有 USB 介面,然後疊代每個介面中的所有描述元。

範圍式 for 迴圈

std::optional<InterfaceList> interface_list;

status = InterfaceList::Create(my_client, true, &interface_list);

if (status != ZX_OK) {
    ...
}

for (auto& interface : *interface_list) {

    for (auto& descriptor : interface.GetDescriptorList()) {
        ...
    }
}

手動循環播放

std::optional<InterfaceList> interface_list;

status = InterfaceList::Create(my_client, true, &interface_list);

if (status != ZX_OK) {
    ...
}

for (auto& interface : *interface_list) {

    auto dList_itr = interface.GetDescriptorList().begin(); // or cbegin().

    do {
        ...
    } while (++dList_itr != interface.GetDescriptorList().end());
}