我們聽到許多 USB 術語幾乎交替拋出。 它們都是什么意思?假設我們看到類似 “多虧了 USB 3.0,我可以將 SuperSpeed U 盤連接到電腦的 xHCI 主機控制器,并更快地復制文件。”
讓我們了解該句子中的 USB 術語。 USB 3.0、USB 2.0 和 USB 1.0 請參閱 USB 論壇中的 USB 規范修訂號。 USB 規范定義主機電腦和 USB 設備如何相互通信。
版本號還指示最大傳輸速度。 最新的規范修訂版是 USB 3.0,它指定的最大傳輸速度高達 5 Gbps。 USB 1.0 定義了兩種不同的數據速率:低速 USB (高達 1.5 Mbps) 和全速 USB (高達 12 Mbps) 。 USB 2.0 定義了新的數據速率、高速 USB (480 Mbps) ,同時保持對低速和全速設備的支持。 USB 3.0 將繼續使用以前定義的所有數據速率。 如果你查看產品包裝,SuperSpeed USB 將參考最新的 USB 3.0 設備。 高速 USB 用于描述高速 USB 2.0 設備。 無描述符的 USB 是指低速和全速設備。
除了 USB 協議之外,USB 主控制器還有第二個規范,即設備連接到的電腦上的硬件。 主機控制器接口規范定義主機控制器硬件和軟件的交互方式。 xHCI可擴展主機控制器接口定義 USB 3.0 主機控制器。 增強型主機控制器接口 (EHCI) 定義 USB 2.0 主控制器。 通用主機控制器 (UHCI) 和開放式主機控制器 (OHCI) 是 USB 1.0 主機控制器的兩個替代實現。
我的電腦是否具有 USB 3.0 端口?
USB 3.0 端口標有 SuperSpeed USB 徽標,或者端口通常為藍色。
較新的電腦同時具有 USB 3.0 和 USB 2.0 端口。 如果希望 SuperSpeed USB 設備以最高速度運行,請找到 USB 3.0 端口并將設備連接到該端口;?連接 USB 2.0 端口的 SuperSpeed 設備可以以高速運行。
還可以驗證特定端口是否為 設備管理器 中的 USB 3.0 端口。 在 Windows Vista 或更高版本的 Windows 中,打開設備管理器,然后從列表中選擇端口。
如果你有一個可擴展的主控制器,則它支持 USB 3.0。
不需要為可擴展主機控制器安裝驅動程序,
Windows 8和Windows Server 2012包括了對 USB 3.0 的內置支持。
如果電腦具有 USB 3.0 端口,并且運行的 Windows 版本早于 Windows 8,則主機控制器驅動程序由電腦制造商提供。 如果需要重新安裝這些驅動程序,則必須從制造商那里獲取它們。
如果將 USB 3.0 控制器卡添加到運行早于 Windows 8 版本的 Windows 的電腦,則必須安裝控制器卡制造商提供的驅動程序。
在 Windows 8 中,Microsoft 提供的 USB 3.0 驅動程序集 (USB 驅動程序堆棧) 適用于大多數主機控制器。 Microsoft USB 3.0 驅動程序堆棧不適用于 Fresco Logic FL1000 控制器。 若要確定是否具有 FL1000 控制器,請打開設備管理器并展開“通用串行總線控制器”。 通過選擇并按住或右鍵單擊控制器節點來查看控制器屬性。 在 “詳細信息 ”選項卡上,選擇列表中的“ 硬件 ID” 屬性。 如果硬件 ID 以 PCI\VEN_1B73&DEV_1000 開頭,則為 FL1000。 對于該控制器,請從電腦或控制器卡制造商下載并安裝驅動程序。
為什么我在系統上看到多個主機控制器?
除了連接到電腦的 USB 設備外,電腦中還集成了許多可能通過 USB 連接的設備,例如網絡攝像頭、指紋讀取器、SD 讀卡器。 為了連接所有這些設備并仍然提供外部 USB 端口,電腦支持多個 USB 主機控制器。
USB 3.0 xHCI 主機控制器完全向后兼容所有 USB 設備速度、超高速、高速、全速和低速。 你可以將任何設備直接連接到 xHCI 控制器,并期望該設備正常工作。 對于 EHCI 控制器,情況并非如此。 雖然 USB 2.0 規范支持設備的所有速度,但 EHCI 控制器僅支持高速 USB 設備。 為了使全速和低速 USB 設備正常工作,它們必須通過 USB 2.0 集線器連接到 EHCI 控制器,或者必須連接到 UHCI 或 OHCI 控制器。
對于較新的電腦,電腦公開的大多數 USB 2.0 端口都是 USB 2.0 集線器的下游端口。 此中心連接到 EHCI 控制器。 這允許電腦的 USB 2.0 端口適用于所有速度的設備。 連接到 2.0 端口時,SuperSpeed 設備的行為與高速設備相同。
USB 2.0 規范發布后,電腦使用主機控制器的組合來支持設備的所有速度。 單個 USB 2.0 端口將連接到兩個主機控制器、一個 EHCI 主控制器和一個 UHCI 或 OHCI 主機控制器。 附加設備時,硬件會將連接動態路由到兩個主機之一。 例程取決于設備的速度。
當我僅連接一個 USB 3.0 集線器時,為什么在 設備管理器 中看到兩個集線器?
雖然 xHCI 主機控制器適用于任何速度的設備,但 SuperSpeed 集線器僅適用于 SuperSpeed 設備。 為了確保 USB 3.0 集線器可以采用所有速度,它們具有兩個部分:SuperSpeed 集線器和 USB 2.0 集線器。 USB 3.0 集線器能夠通過根據設備速度動態路由設備到 SuperSpeed 集線器或 2.0 集線器來支持所有速度。
打開設備管理器,按連接查看設備,然后找到可擴展主機控制器。 將單個 USB 3.0 集線器連接到 USB 3.0 端口時,控制器根集線器的下游有兩個集線器。
在下面的示例中,SuperSpeed USB 存儲設備和 USB 音頻設備都連接到 USB 3.0 集線器。 可以看到存儲設備位于 SuperSpeed 集線器的下游,音頻設備位于 USB 2.0 集線器的下游。
usb 3.0 集線器,在設備管理器中連接了設備
為連接到 2.0 端口的設備加載了哪組驅動程序?
為每種類型的主機控制器加載一組不同的二進制文件。 請務必了解,Windows 加載的 USB 驅動程序堆棧與主機控制器的類型相關,而不是與連接設備的速度相關。
在此圖中,可以看到為每種不同類型的 USB 主控制器加載了哪些驅動程序。
Windows 8 中的 usb 驅動程序堆棧
如果 USB 3.0 端口正確路由到 xHCI 控制器,Windows 將加載 xHCI 驅動程序堆棧 ,也稱為 USB 3.0 驅動程序堆棧。
如果 USB 2.0 端口通過 USB 2.0 集線器連接到 EHCI 控制器,則流量會通過 EHCI 控制器移動,并加載 USB 2.0 驅動程序堆棧。
如果電腦的 USB 2.0 端口使用配套控制器,則端口路由到的主控制器取決于設備速度。 例如,低速設備通過 UHCI 或 OHCI 控制器連接,并使用 USBUHCI 或 USBOHCI 驅動程序。 電腦將高速設備路由到 EHCI 控制器,因此 Windows 使用 USBEHCI 驅動程序。
不同的設備速度無法確定為控制器加載的驅動程序。 但是,不同的設備速度可能會決定使用哪個控制器。 控制器始終使用相同的驅動程序。
如何實現確定我的 USB 3.0 設備是否以 SuperSpeed 運行?
在Windows 8中,首先請確保有 USB 3.0 端口和 xHCI 主機控制器。 如果 SuperSpeed USB 設備已連接到 xHCI 主機控制器,Windows 8在Windows 8 UI 的特定部分中顯示“已連接到 USB 3.0”消息。 如果設備連接到 EHCI 控制器而不是 XHCI 控制器,則消息將改為顯示“連接到 USB 3.0 時設備可以更快地執行”。
你可以在電腦設置中查看這些 UI 消息。
- 打開超級按鈕欄 (將光標拖到屏幕的右上角或右下角,鍵入 Windows 鍵 + C,或用手指) 從右側輕掃。
- 選擇 “設置” ,然后選擇“ 更改電腦設置”。
- 在“電腦設置”下選擇“設備”。
此圖像顯示 USB 3.0 設備在 SuperSpeed 下運行時的 UI 消息。
顯示“電腦設置”的屏幕截圖,其中選擇了“設備”并突出顯示了“U S B 3.0 RAIDrive”。
此圖顯示 USB 設備以低于 SuperSpeed 的總線速度運行時的 UI 消息。
顯示已選擇“設備”和“U S B 3.0 RAIDrive”的屏幕截圖,其中突出顯示了消息“連接到 U S B 3.0 時,設備可以更快地執行”。
可以在“設備和打印機”中查看類似的消息,如這些圖像中所示
顯示“存儲 - 設備和打印機”的屏幕截圖,其中選擇了顯示“已連接到美國 B 3.0”消息的設備。
高速運行的超高速設備
如果 USB 3.0 設備是存儲設備,則 Windows 資源管理器在選擇卷標簽時會顯示類似的消息,如下所示。 請注意,必須選擇“ 視圖 -> 詳細信息 ”窗格才能顯示消息。
屏幕截圖顯示了在“資源管理器”中選擇的超速 US B 設備,并在“詳細信息”窗格中突出顯示了“已連接到 US B 3.0”消息。?
高速運行的超高速 USB 設備
如果要編寫設備驅動程序,則 Windows 驅動程序工具包 (WDK) 中包含的 USBView 工具非常有用。 對于Windows 8 WDK,Microsoft 更新了 USBView 以顯示 SuperSpeed USB 信息。 可以使用此工具確定你的設備是否在 SuperSpeed 中運行。 此圖像顯示 USBView 中的 SuperSpeed 中運行的 USB 3.0 設備。
超速 USB 設備以超速運行
如果你是設備驅動程序開發人員, USB 驅動程序堆棧 會公開一個名為 IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 的新 IOCTL,可用于查詢 USB 3.0 設備的速度信息。
為什么我的 SuperSpeed USB 設備速度不快于等效的高速 USB 設備?
通常,如果 USB 3.0 USB 設備的速度不快于高速 USB 設備,則它不會在 SuperSpeed 中執行。 如果 SuperSpeed USB 設備連接到 USB 3.0 端口,它可能無法在 SuperSpeed 中運行,原因如下:
-
你使用的是 USB 2.0 集線器。
如果使用的是集線器,請驗證它是 USB 3.0 集線器。 如果使用 USB 2.0 集線器,則任何連接的 SuperSpeed USB 設備都將高速運行。 將集線器替換為 USB 3.0 集線器,或將設備直接連接到 USB 3.0 端口。
- USB 3.0 集線器上的固件已過期。
某些早期的 USB 3.0 集線器無法正常工作。 因此,Windows 僅使用這些中心的 2.0 部分。 如果設備管理器指示此圖中所示的“非功能”中心,則Windows 8未使用中心的 3.0 部分。
非功能性超速 USB 集線器
可以將 SuperSpeed 設備直接連接到 USB 3.0 端口,或更新集線器上的固件。 Windows 8識別具有較新固件的中心。
- 設備使用 USB 2.0 電纜連接。
確保用于連接設備的電纜是 USB 3.0 電纜。 USB 3.0 電纜也可能存在信號完整性問題。 在這種情況下,設備可能會切換到高速。 如果發生這種情況,則必須使用不同的 USB 3.0 電纜。
- 設備上的固件已過期。
通過從制造商的網站獲取最新版本來更新 SuperSpeed USB 設備的固件。 一些 SuperSpeed USB 設備制造商發布了固件更新時在設備中找到的 bug 的修補程序。
- 主機控制器上的固件已過期。
更新 USB 3.0 控制器的固件,方法是從電腦制造商的站點或從卡制造商站點的添加獲取最新版本。 一些 USB 3.0 控制器制造商發布了固件更新時在控制器中發現的 bug 的修補程序。
- 系統的 BIOS 已過期。
通過從電腦制造商獲取最新版本來更新系統的 BIOS。 在某些主板上,BIOS 可能會錯誤地將連接到 xHCI 主機控制器的設備路由到 EHCI 控制器。 不正確的路由會強制 SuperSpeed USB 設備高速運行。 BIOS 更新可以解決此問題。
是否可以在一個硬件中配置復合和復合設備?
是的。 Microsoft Natural Keyboard Pro 具有三端口總線供電集線器,是復合復合 USB 設備的一個示例。 設備具有連接到端口 1 的復合設備。 向最終用戶公開另外兩個端口。
連接到端口 1 的設備是低速復合設備。 該設備有兩個接口,這兩個接口都符合人機接口設備的 USB 標準設備類定義, (HID) 。 復合設備提供兩個 HID 接口,而不是使用頂級集合在單個 HID 接口上多路復用所有集合。 選擇此設計是為了與舊版 BIOS 兼容。
為什么我的某些 USB 設備在移動到新端口時會重新安裝?
在 Windows 2000 及更高版本的操作系統中,當 USB 設備從一個端口移動到另一個端口時,會創建一個新的 (PDO) 的物理設備對象。 如果硬件報告唯一的 USB 序列號,則不會創建新的 PDO。
若要重復使用同一 PDO 并確保無論設備是重新插入同一端口還是新端口,設備體驗保持不變,硬件供應商必須在其設備上存儲序列號。 根據 Windows 硬件認證計劃要求,對于共享設備安裝標識符的所有設備,序列號必須是唯一的。
是否有 USB 產品包裝的設計建議列表?
USB-IF 已與 Microsoft 和其他 USB-IF 成員公司合作,為獨立硬件供應商制定建議列表,以包含在其包裝中。可以參考?USB官網。
是否必須重寫客戶端驅動程序以支持 USB 3.0 設備?
當低速、完整或高速設備連接到 USB 3.0 端口時,所有現有的客戶端驅動程序應繼續工作。 在 Windows 8 中,我們已確保與現有客戶端驅動程序兼容。
USB 3.0 驅動程序堆棧維護 IRQL 級別、調用方上下文和錯誤狀態;與設備交互時重試頻率和計時等,以確保現有驅動程序繼續工作。 測試仍然非常重要。
出現常見故障的原因是:
- 由于存在 SuperSpeed 終結點配套描述符,驅動程序的終結點描述符分析中斷。
- 由于速度的提高,可能會在應用程序協議級別遇到計時問題。
- 終結點支持的最大數據包大小可能不同。
- 由于功能電源管理,選擇性掛起操作的計時可能不同。
在 Windows 7 及更低版本的操作系統中,USB 3.0 驅動程序堆棧由第三方提供。 因此,強烈建議測試驅動程序以使用第三方 USB 驅動程序堆棧。
適用于高速和超高速 USB 設備的 Windows 8 中的新客戶端驅動程序應選擇新功能。
為我的 SuperSpeed 存儲設備使用、Uaspstor.sys 或 Usbstor.sys 加載了哪個驅動程序?
USB 附加 SCSI (UAS) 協議是一種新的大容量存儲協議,旨在通過已建立的 USB 大容量存儲協議批量僅傳輸 (BOT) 提高性能。 它通過減少協議開銷、支持 SATA 本機命令排隊 (NCQ) 以及并行處理多個命令來執行此操作。 為此,UAS 使用新的 USB 3.0 功能進行稱為流的批量傳輸。
現有的大容量存儲驅動程序(Usbstor.sys)使用 BOT 協議。 它適用于所有速度的設備,包括 SuperSpeed USB 設備。
對于Windows 8,Microsoft 包含一個新的大容量存儲類驅動程序,Uaspstor.sys 使用 UAS 協議。 由于流是 USB 3.0 的新增功能,因此僅當硬件支持流 (SuperSpeed USB 設備連接到 xHCI 主機控制器) 時,Uaspstor.sys 才能使用流。 驅動程序還包括對軟件流的支持,因此無論主機類型如何,它都可以為高速運行的設備加載。
如果將大容量存儲設備連接到Windows 8并且該設備支持 UAS,則 Windows 將加載 Uaspstor.sys。 在某些情況下,特定 xHCI 主控制器上的硬件流可能存在已知問題,或者設備的 UAS 協議實現存在已知問題。 在這些情況下,Windows 會回退到 BOT 協議,并改為加載 Usbstor.sys 驅動程序。
Uaspstor.sys 不熟悉Windows 8。 它在早期版本的 Windows 中不存在。
Microsoft 支持哪些 USB DWG 類?
Windows 支持 USB 設備工作組 (DWG) 定義的多個 USB 類。 有關 USB 類規范和類代碼的當前列表,請訪問 USB DWG 網站 https://www.usb.org/documents。
此表突出顯示了 Windows 中支持的 USB DWG 類,并標識了支持每個類的 Windows 版本。
*加載此驅動程序需要特殊說明,因為此驅動程序可能比操作系統晚發布。 Windows 類驅動程序可能不支持 DWG 類規范中描述的所有功能。 在這種情況下,驅動程序不會基于類匹配進行加載。 有關類規范中實現的功能的其他詳細信息,請參閱 WDK 文檔。
?
我應該對自定義 USB 設備使用哪個設備設置類?
Microsoft 為大多數設備類型提供系統定義的安裝類。 系統定義的安裝類 GUID 在 Devguid.h 中定義。?
獨立硬件供應商必須使用與 USB 設備類型(而不是總線類型)關聯的設置類。 如果要開發 Microsoft 尚未提供現有類 GUID 的設備類型,則可以定義新的設備安裝類。
在 Windows 8 中,定義了名為 USBDevice (ClassGuid = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}) 的新安裝程序類。 如果要開發設備類型,請將設備與 USBDevice (而不是安裝類 USB)關聯。 USBDevice 類適用于 Windows Vista 和更高版本的操作系統。
安裝程序類 USB (ClassGuid = {36fc9e60-c465-11cf-8056-444553540000}) 僅保留用于 USB 主機控制器和 USB 集線器,不得用于其他設備類別。 錯誤地使用此安裝程序類可能會導致設備驅動程序無法通過 Windows 徽標測試。
為什么在連接某些 USB 設備時,CPU 不會進入 C3?
連接 USB 設備時,USB 主控制器會輪詢幀計劃程序,這是 (DMA) 總線主操作的直接內存訪問。 “中斷事件”(如總線主流量、中斷或其他幾個系統活動)將 CPU 移出 C3,因為根據定義,CPU 的緩存在 C3 中時無法窺訪問。
可通過兩種方法解決此問題:
- 硬件刪除。
有時,可以通過電子方式斷開硬件與通用串行總線的連接。 例如,從 USB 讀卡器中刪除存儲介質時,USB 讀卡器可以模擬電子斷開連接,并在重新插入媒體時重新連接。 在這種情況下,可能會發生 C3 轉換,因為主控制器上沒有 USB 設備。
- 選擇性掛起。
Windows XP 及更高版本操作系統中唯一可用的替代方法是支持 USB 選擇性掛起。 此功能允許驅動程序在設備空閑時掛起它控制的 USB 設備,即使系統本身保持完全工作狀態 (S0) 也是如此。 如果所有 USB 功能驅動程序都支持選擇性掛起,則選擇性掛起功能特別強大。 如果即使有一個驅動程序不支持它,CPU 也無法進入 C3。
哪些 USB 類驅動程序支持選擇性掛起?
下面是Windows 8中支持選擇性掛起的 USB 類驅動程序的列表:
Bluetooth: 此驅動程序可以選擇性地掛起運行 Windows XP Service Pack 2 及更高版本的計算機上的設備。 驅動程序要求藍牙無線電在配置描述符中設置自供電和遠程喚醒位。 當不存在活動藍牙連接時,驅動程序有選擇地暫停 (D2) 藍牙無線電。
USB HID 此驅動程序可以選擇性地掛起 HID 設備。 你有責任在所有設備狀態更改上觸發遠程喚醒信號。 若要在 HID 堆棧中啟用選擇性掛起,必須為設備的特定 VID+PID 啟用 SelectiveSuspendEnabled 注冊表值。?
在支持Windows 8連接待機的系統上,當系統處于連接待機狀態時,此驅動程序將進入選擇性掛起 (D2) 。 此驅動程序可以喚醒系統并打開屏幕。
USB 集線器: 在沒有連接到根中心或外部中心的設備或連接到該中心的所有設備可以有選擇地掛起時,此驅動程序可以選擇性地掛起。
USB 調制解調器: 在沒有活動調制解調器連接時,此驅動程序可以有選擇地掛起設備。
USB 存儲: 當支持Windows 8連接待機的系統上,當這些系統進入連接待機狀態時,此驅動程序可以有選擇地掛起 (D3) 存儲設備。 與 HID 一樣,注冊表重寫用于在所有Windows 8系統上啟用選擇性掛起。
USB 存儲 (UAS): 當存儲設備在磁盤超時期間處于空閑狀態時,此驅動程序可以有選擇地掛起 (D3) 。
USB 攝像頭: 此驅動程序可以在 Windows Vista 和更高版本的操作系統上選擇性地掛起 (D3) 網絡攝像頭。
USB 音頻: 當計算機使用電池電源時,此驅動程序可以在 Windows 7 及更高版本的操作系統上選擇性地掛起 (D3) USB 音頻設備。
復合 USB 當所有子項都處于掛起狀態時,此驅動程序可以選擇性地掛起 (D3) 復合設備。 在支持 D3-Cold 的系統上,所有子級都必須選擇使用 D3-Cold。
USB 智能卡: 默認情況下,在 Windows 7 及更高版本的操作系統中,此驅動程序可以有選擇地掛起 (D2) 智能卡接口設備。
通用 USB 外設 (WinUSB): 默認情況下,此驅動程序可以在 Windows Vista 和更高版本的操作系統上選擇性地掛起 (D3) 設備。
WWAN:3G 或 WiMax 硬件保護裝置,此驅動程序可以有選擇地掛起設備。 當存在活動訂閱時,設備將進入 D2,在沒有活動訂閱的情況下,設備將進入 D3。
為什么 USB 設備無法從 S3 喚醒 Windows?
USB 設備無法從 S3 喚醒 Windows,原因有多種,包括:
- BIOS 不正確。
驗證計算機上是否已安裝最新的 BIOS。 若要獲取計算機的最新 BIOS 修訂版,請訪問 OEM 或 ODM 的網站。
- 未啟用喚醒的 BIOS。
某些 BIOS 可以禁用從 S3 和 S4 喚醒。 驗證 BIOS 是否已啟用從 S3 喚醒。
- 未設置 USBBIOSx 注冊表項。
Windows XP 的全新安裝沒有 USBBIOSx 注冊表項。 如果 OEM 或 ODM 驗證 BIOS 是否可以從 S3 喚醒,請將此注冊表項設置為0x00并重新啟動計算機。
- 主機控制器在 S3 或 S4 中沒有電源。
很多時候,當電腦處于較低功率狀態時,電腦會切斷加載項卡電源。 如果加載項卡沒有電源,它將無法檢測喚醒事件,并且無法喚醒電腦。
是否需要為增強型 (USB 2.0) 主機控制器安裝驅動程序?
以下版本的 Windows 支持 USB 2.0 增強型主機控制器:
- Windows Vista 及更高版本
- Windows Server 2003 及更高版本
- Windows XP Service Pack 1
- Windows 2000 Service Pack 4
注意 由于 Windows 2000 和 Windows XP 是在 USB 2.0 硬件可用之前發布的,因此在 Service Pack 中為這些操作系統發布了驅動程序。 安裝驅動程序的方式如下:
1.按照第一個問題的答案中所述的過程,驗證計算機是否具有 USB 2.0 端口,以及是否需要為增強型主機控制器安裝驅動程序。
2.在“設備管理器”窗口中,展開第一個問題中所述的“其他設備”部分,然后雙擊“通用串行總線 (USB) 控制器”。
3.在“屬性”對話框的“ 常規 ”選項卡上,選擇“ 重新安裝驅動程序”。
4.在“添加新硬件向導”中,選擇“ 自動安裝軟件 (推薦) ”,然后選擇“ 下一步”。 繼續執行向導,接受所有默認選項,直到到達向導的最后一頁,然后選擇“ 完成”。 可能需要重新啟動計算機才能完成安裝。
注意若要確保計算機上安裝了最新更新,請定期訪問 Windows 更新。
是否可以禁用“HI-SPEED USB 設備已插入非 HI-SPEED USB 端口”通知?
當高速 USB 設備插入不支持高速的 USB 端口時,Windows XP 和更高版本的 Windows 會創建彈出通知。 若要從設備獲得最快的性能,用戶必須選擇通知并按照屏幕上的說明進行操作。
若要禁用該通知,請執行以下步驟:
- 如本常見問題解答中的第一個問題中所述,開始設備管理器。
- 在“設備管理器”窗口中,展開“通用串行總線控制器”節點。 查找標題中帶有“通用”或“打開”字樣的主控制器。 如果找到,請雙擊它。
- 在“屬性”對話框的“高級”選項卡上,選擇“不告訴我 USB 錯誤”。
注意 上述過程禁用所有 USB 通知,而不僅僅是“HI-SPEED USB 設備已插入非 HI-SPEED 端口”。
我的 USB 2.0 集線器是單 TT 還是多 TT?
USB 2.0 集線器可以有一個事務轉換器 (TT) ,用于集線器上所有面向下游的端口 (單個 TT) ,也可以為集線器上每個面向下游的端口提供一個 TT (多個 TT) 。
USB 設備描述符的 bDeviceProtocol 字段的值和 USB 接口描述符的 bInterfaceProtocol 字段的值指示集線器是單 TT 還是多 TT:
- 單一 TT。 bDeviceProtocol == 0x01
- 多 TT。 bDeviceProtocol == 0x02
Usbhub.sys 使用此設置啟用多 TT 模式或單 TT 模式。 在 Windows XP 及更高版本上,Usbhub.sys 始終在多 TT 中心上啟用多 TT 模式。 有關 TT 布局的其他詳細信息,請參閱 USB 2.0 規范的第 11.14.1.3 和 11.23.1 節。
USB 序列號中哪些字符或字節有效?
USB 設備描述符的 iSerialNumber 字段指示設備是否具有序列號以及該編號的存儲位置,如下所示:
iSerialNumber == 0x00:USB 設備沒有序列號。
iSerialNumber != 0x00:USB 設備具有序列號。 分配給 iSerialNumber 的值是序列號的字符串索引。
如果設備具有序列號,則序列號必須唯一標識同一設備的每個實例。
例如,如果兩個設備描述符的 idVendor、 idProduct 和 bcdDevice 字段具有相同的值, 則 iSerialNumber 字段必須不同,以便區分一個設備與另一個設備。
即插即用要求 USB 序列號中的每個字節都有效。 如果單個字節無效,Windows 將放棄序列號,并將設備視為沒有序列號。 以下字節值對 USB 序列號無效:
- 0x2C。
- 小于 0x20 的值。
- 大于 0x7F 的值。
有關 iSerialNumber 值的其他詳細信息,請參閱 USB 2.0 規范的 9.6.1 部分。
在 Windows 本地化版本的字符串請求中使用了哪些 LANGID?
USB 設備通過將 USB 設備描述符的 iSerialNumber 字段設置為序列號的字符串索引來指示存在序列號。 為了檢索序列號,Windows 發出一個字符串請求,其中語言標識符 (LANGID) 設置為 0x0409 (美國英語) 。 Windows 始終使用此 LANGID 來檢索 USB 序列號,即使是針對其他語言本地化的 Windows 版本也是如此。
什么 LANGID 用于提取設備的序列號?
USB 設備通過將 USB 設備描述符的 iSerialNumber 字段設置為序列號的字符串索引來指示存在序列號。 為了檢索序列號,Windows 發出一個字符串請求,其中語言標識符 (LANGID) 設置為 0x0409 (美國英語) 。 Windows 始終使用此 LANGID 來檢索 USB 序列號,即使是針對其他語言本地化的 Windows 版本也是如此。
如何將數字分配給復合設備上的多個接口?
Windows 將第一個配置中具有多個接口的 USB 設備視為復合設備。
對于 Windows XP Service Pack 1 及更早版本的 Windows:
- 接口號必須是從零開始的。
- 接口編號必須是連續且遞增的。
對于 Windows XP Service Pack 2 及更高版本的 Windows,接口編號只需遞增,而不是連續增加。
應為所有版本的 Windows 分配接口的備用設置,如下所示:
- 接口的默認值始終為備用設置零。
- 其他備用設置數必須是連續的且不斷增加的。
Usbccgp.sys 施加的主要限制是什么?
Usbccgp.sys 支持以下各項的復合設備:
- Windows Me
- Windows XP
- Windows Server 2003
- Windows Vista
- Windows Server 2008
盡管仍可以在這些及更高版本的 Windows 上加載 Usbhub.sys 作為復合設備的父驅動程序,但 Microsoft 不建議這樣做,因為這可能會導致硬件兼容性錯誤。 應改用 Usbccgp.sys 。
若要確保為復合設備加載正確的驅動程序,請在 INF 文件中使用 Include 和 Needs 指令,如下所示:
Include = USB.INF
Needs = Composite.Dev
Usbccgp.sys 對硬件設備和驅動程序施加的主要限制如下:
- Usbccgp 僅支持默認配置,即配置 0。
- Usbccgp 在 Windows XP 和 Windows Server 2003 中不支持選擇性掛起。 此功能僅在 Windows Vista 和更高版本的 Windows 中受支持。 注意 Usbccgp 在 Windows XP SP1 和更高版本的 Windows XP 中支持選擇性掛起,但功能有限。 對于這些版本的 Windows,僅當設備的每個子功能都有掛起的空閑 IRP 時,復合設備才會進入選擇性掛起狀態。 Usbccgp 不支持 Windows XP RTM 中的選擇性掛起
- Usbccgp 僅在 Windows XP SP2、Windows Server 2003 SP1 和更高版本的 Windows 中支持 IAD (IAD) 接口關聯描述符。
- Usbccgp 僅在 Windows XP SP2、Windows Server 2003 SP1 和更高版本的 Windows 中支持非連續接口號。
Windows 是否支持接口關聯描述符?
是的。 USB 2.0 接口關聯描述符 (IAD) 工程更改通知 (ECN) 引入了一種新的標準方法,用于描述接口分組及其函數中的備用設置。 IAD 可用于標識一個函數中的兩個或多個連續接口和備用設置。
Microsoft 目前正在使用 IHV 開發支持 IAD 的設備。 以下操作系統支持 IAD:
- Windows XP Service Pack 2 及更高版本
- Windows Server 2003 Service Pack 1 及更高版本
- Windows Vista
USB 堆棧是否處理 URB 中鏈接的 MDL?
Windows 附帶的 USB 3.0 驅動程序堆棧支持此功能。
驅動程序是否可以在 IRP 中有多個 URB?
錯誤。 Windows 附帶的 USB 堆棧不支持此功能。
Windows 是否支持 USB 復合集線器?
復合 USB 設備(也稱為多功能 USB 設備)公開多個功能,其中每個功能都可以視為獨立的設備。 系統加載 USB 泛型父驅動程序 (Usbccgp.sys),以充當設備功能的父驅動程序。 USB 泛型父驅動程序枚舉復合設備的功能,就像它們是單獨的 USB 設備一樣,然后創建 PDO 并為每個函數構造設備堆棧。
復合 USB 設備無法公開用作集線器的函數。 Windows 未正確枚舉此類中心,并且嘗試安裝設備可能會導致系統崩潰。
?
?