從 USB 取得描述元和端點

usb 類別包含多個子類別,用來存取介面、描述元、 以及 usb 裝置的端點包含以下子類別:

USB 描述元會回報裝置的所有屬性。端點是一種特定類型的描述元 ,說明主機與裝置之間通訊流程的術語。

InterfaceList 類別會對 USB 裝置中的每個 Interface 進行疊代。 每個 Interface 都包含:

  • DescriptorListGetDescriptorList()
  • EndpointListGetEndpointList()

這些方法允許存取介面的所有描述元與端點。

這些子類別的階層可在圖 1 中看見。

USB 類別階層圖表

圖 1

範例

接收 USB 的描述元

這些範例會反覆查看 USB 裝置中的所有描述元。範例會反覆查詢 然後逐一查看所有介面中的所有描述元。

以範圍為依據的迴圈

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());
}