Windows USB設備驅動開發 - 常見概念的解釋

我們聽到許多 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 徽標,或者端口通常為藍色。

095fce199d434923b5ba50d29d558d93.png773233e50b7548a3af47680697172247.png

較新的電腦同時具有 USB 3.0 和 USB 2.0 端口。 如果希望 SuperSpeed USB 設備以最高速度運行,請找到 USB 3.0 端口并將設備連接到該端口;?連接 USB 2.0 端口的 SuperSpeed 設備可以以高速運行。

還可以驗證特定端口是否為 設備管理器 中的 USB 3.0 端口。 在 Windows Vista 或更高版本的 Windows 中,打開設備管理器,然后從列表中選擇端口。

cb95f98b5a264f5cb070cd9d8ef11964.png

如果你有一個可擴展的主控制器,則它支持 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 端口時,控制器根集線器的下游有兩個集線器。

17dba69a9f0c458a948a7b419a0fca8a.png在下面的示例中,SuperSpeed USB 存儲設備和 USB 音頻設備都連接到 USB 3.0 集線器。 可以看到存儲設備位于 SuperSpeed 集線器的下游,音頻設備位于 USB 2.0 集線器的下游。

607d32813f4544e2bd216445283c4717.png

usb 3.0 集線器,在設備管理器中連接了設備

為連接到 2.0 端口的設備加載了哪組驅動程序?

為每種類型的主機控制器加載一組不同的二進制文件。 請務必了解,Windows 加載的 USB 驅動程序堆棧與主機控制器的類型相關,而不是與連接設備的速度相關。

2a952f42551948a99f905373fe27a485.png

在此圖中,可以看到為每種不同類型的 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 消息。

5c2d1a024d6a4f4885312dca1a0febfc.png

顯示“電腦設置”的屏幕截圖,其中選擇了“設備”并突出顯示了“U S B 3.0 RAIDrive”。

此圖顯示 USB 設備以低于 SuperSpeed 的總線速度運行時的 UI 消息。

ac37ba9027e94b089df782f21ebb7e30.png

顯示已選擇“設備”和“U S B 3.0 RAIDrive”的屏幕截圖,其中突出顯示了消息“連接到 U S B 3.0 時,設備可以更快地執行”。

可以在“設備和打印機”中查看類似的消息,如這些圖像中所示

742351a163274cbfa8fff739fb7547df.png

e3189c5005534b44b515787e47cca1af.png

顯示“存儲 - 設備和打印機”的屏幕截圖,其中選擇了顯示“已連接到美國 B 3.0”消息的設備。

高速運行的超高速設備

如果 USB 3.0 設備是存儲設備,則 Windows 資源管理器在選擇卷標簽時會顯示類似的消息,如下所示。 請注意,必須選擇“ 視圖 -> 詳細信息 ”窗格才能顯示消息。

b7feb6477b1b4fd28e138c10befd3f61.pngef1e36d3f1924b439298d59dcd1c36ae.png

屏幕截圖顯示了在“資源管理器”中選擇的超速 US B 設備,并在“詳細信息”窗格中突出顯示了“已連接到 US B 3.0”消息。?

高速運行的超高速 USB 設備

如果要編寫設備驅動程序,則 Windows 驅動程序工具包 (WDK) 中包含的 USBView 工具非常有用。 對于Windows 8 WDK,Microsoft 更新了 USBView 以顯示 SuperSpeed USB 信息。 可以使用此工具確定你的設備是否在 SuperSpeed 中運行。 此圖像顯示 USBView 中的 SuperSpeed 中運行的 USB 3.0 設備。

883ac14cef35438cb801aa08aa424743.png

超速 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 部分。

5bd5be6831cf4427b5e9e5195fec53c6.png

非功能性超速 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 文檔。

?

8f0d1fe88a634a6281ea9cf23ad0a6ad.png

我應該對自定義 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.在“屬性”對話框的“ 常規 ”選項卡上,選擇“ 重新安裝驅動程序”。

09ae2f57eb2a4c1483a8819fb136df02.png

4.在“添加新硬件向導”中,選擇“ 自動安裝軟件 (推薦) ”,然后選擇“ 下一步”。 繼續執行向導,接受所有默認選項,直到到達向導的最后一頁,然后選擇“ 完成”。 可能需要重新啟動計算機才能完成安裝。

注意若要確保計算機上安裝了最新更新,請定期訪問 Windows 更新。

是否可以禁用“HI-SPEED USB 設備已插入非 HI-SPEED USB 端口”通知?

當高速 USB 設備插入不支持高速的 USB 端口時,Windows XP 和更高版本的 Windows 會創建彈出通知。 若要從設備獲得最快的性能,用戶必須選擇通知并按照屏幕上的說明進行操作。

若要禁用該通知,請執行以下步驟:

  1. 如本常見問題解答中的第一個問題中所述,開始設備管理器。
  2. 在“設備管理器”窗口中,展開“通用串行總線控制器”節點。 查找標題中帶有“通用”或“打開”字樣的主控制器。 如果找到,請雙擊它。
  3. 在“屬性”對話框的“高級”選項卡上,選擇“不告訴我 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 未正確枚舉此類中心,并且嘗試安裝設備可能會導致系統崩潰。

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37056.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37056.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37056.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Winform 樹形控件的開發實戰

在Windows Forms(WinForms)開發中,樹形控件(TreeView)是非常常用的一種控件,用于展示層級結構的數據,如文件系統、組織結構、菜單等。下面,我將通過一個實戰示例,向你展示如何在WinForms中開發和…

計網實訓——不相同網段的PC相互通信

目錄 提前準備APP路由器指令 實驗一1、實驗需求(1)實現同網段的PC相互通信。(2)實現不相同網段的PC相互通信。(3)分析相同和不同網段PC通信時MAC地址的變化。 2、實驗拓撲3、實驗步驟及實驗截圖&#xff08…

rk3588 debian系統配置AP6275S ap模式

rk3588 debian配置AP6275S ap模式 文章目錄 rk3588 debian配置AP6275S ap模式前言一、內置開啟ap模式的系統工具1.1、內置hostapd工具1.2、內置dhcp工具二、熱點配置2.1、 /etc/hostapd/hostapd.conf 配置2.2、/etc/dhcp/dhcpd.conf 配置三、測試3.1、運行dhcpd3.2、運行hostap…

[數據結構】——七種常見排序

文章目錄 前言 一.冒泡排序二.選擇排序三.插入排序四.希爾排序五.堆排序六.快速排序hoare挖坑法前后指針快排遞歸實現:快排非遞歸實現: 七、歸并排序歸并遞歸實現:歸并非遞歸實現: 八、各個排序的對比圖 前言 排序:所謂…

uni-app 微信小程序開發到發布流程

1. uni-app 微信小程序開發到發布流程 1.1. 新建一個uni-app 項目 1.2. 發行微信小程序 1.3. 微信開發者平臺的微信小程序appid 復制進來(點擊發行) 1.4. IDE may already started at port xxxx, trying to connect (1)關閉微信…

小白上手AIGC-基于FC部署stable-diffusion

AIGC AIGC(人工智能創造內容)作為一種基于人工智能技術生成內容的新型創作模式。打破了過去大家對于AI的理解都是說只能涉足部分領域而無法涉足藝術或者是其他的創作領域的定律,現在的AIGC也能夠創作內容了,而不再只是單純的返回…

動手學深度學習(Pytorch版)代碼實踐 -計算機視覺-45多尺度目標檢測

45多尺度目標檢測 # 多尺度錨框 """ 減少圖像上的錨框數量并不困難。 比如,我們可以在輸入圖像中均勻采樣一小部分像素, 并以它們為中心生成錨框。 此外,在不同尺度下,我們可以生成不同數量和不同大小的錨框。 直…

Apifox 更新|定時任務、內網自部署服務器運行接口定時導入、數據庫 SSH 隧道連接

Apifox 新版本上線啦! 看看本次版本更新主要涵蓋的重點內容,有沒有你所關注的功能特性: 自動化測試支持設置「定時任務」支持內網自部署服務器運行「定時導入」數據庫均支持通過 SSH 隧道連接自動化測試數據庫操作優化 1、自動化測試支持設…

C++ 100 之 容器插入和刪除

vector插入和刪除操作 insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count個元素ele. push_back(ele); //尾部插入元素ele pop_back();//刪除最后一個元素 erase(const_iterator start, const_iterator end);//刪除迭代器從start到end之間的元素 erase(c…

Mac(M1芯片)安裝多個jdk,Mac卸載jdk

1.jdk下載 oracle官方鏈接:oracle官方下載鏈接 2.安裝 直接下一步,下一步就行 3.查看是否安裝成功 出現下圖內容表示安裝成功。 4.配置環境變量 open -e .bash_profile 路徑建議復制過去 #刷新環境變量 source ~/.bash_profile 5.切換方法 6.jdk…

企業應該如果安全上網,軟件防查盜版,企業防盜版

隨著信息化的發展,企業日常辦公越來越依賴互聯網。終端以及普通PC終端在訪問互聯網過程中,會遇到各種各樣不容忽視的風險,例如員工主動故意的數據泄漏,后臺應用程序偷偷向外部發信息,木馬間諜軟件的外聯,以…

Spring Boot 過濾器和攔截器詳解

目錄 Spring Boot 過濾器1.什么是過濾器2.工作機制3.實現過濾器 Spring Boot 攔截器1. 什么是攔截器2. 工作原理3.實現4.拓展(MethodInterceptor 攔截器)實現 過濾器和攔截器區別過濾器和攔截器應用場景過濾器攔截器 Spring Boot 過濾器 1.什么是過濾器 …

信創認證 | Smartbi Insight V11成功適配申威3231處理器

在信息技術飛速發展的浪潮中,軟硬件的深度融合與協同發展已成為推動行業創新的關鍵因素。 近日,思邁特商業智能與數據分析軟件[簡稱:Smartbi Insight]V11在統信服務器操作系統V20和中電科申泰信息科技有限公司產品申威3231處理器環境下完成適…

日本職場跳槽漲薪調查報告!原來薪資漲幅的秘訣在這!

看到篇帖子,日本職場跳槽的調查報告: 文章中根據日本大型求職網站doda,通過分析網站注冊會員的數據以及職業顧問的解說,來了解一下跳槽實現工資提升的人基本情況以及趨勢。 本次調查對象跳槽后平均年收入提升了906,274日元&#…

Python 語法基礎一

1.變量 python 中變量很簡單,不需要指定數據類型,直接使用等號定義就好。python變量里面存的是內存地址,也就是這個值存在內存里面的哪個地方,如果再把這個變量賦值給另一個變量,新的變量通過之前那個變量知道那個變量…

《昇思25天學習打卡營第10天 | 昇思MindSporeFCN圖像語義分割》

第10天 本節學習了FCN圖像語義分割。全卷積網絡是用于圖像語義分割的一種框架。FCN是首個端到端(end to end)進行像素級(pixel level)預測的全卷積網絡。FCN有兩大明顯的優點:一是可以接受任意大小的輸入圖像&#xff…

【滲透工具】內網多級代理工具Venom詳細使用教程

免責申明 本公眾號的技術文章僅供參考,此文所提供的信息只為網絡安全人員對自己所負責的網站、服務器等(包括但不限于)進行檢測或維護參考,未經授權請勿利用文章中的技術資料對任何計算機系統進行入侵操作。利用此文所提供的信息…

【LeetCode】九、雙指針算法:環形鏈表檢測 + 救生艇

文章目錄 1、雙指針算法1.1 對撞雙指針1.2 快慢雙指針 2、leetcode141:環形鏈表3、leetcode881:救生艇 1、雙指針算法 用兩個指針來共同解決一個問題: 1.1 對撞雙指針 比如先有一個有序的數組array int[] array {1, 4, 5, 7, 9}先要找兩個…

什么是產線工控安全,如何保障產線設備的安全

什么是產線工控安全? 工控,指的是工業自動化控制,主要利用電子電氣、機械、軟件組合實現。即是工業控制系統,或者是工廠自動化控制。產線工控安全指的是工業控制系統的數據、網絡和系統安全。隨著工業信息化的迅猛發展&#xff0…

如何利用“AI交互數字人+展廳”拓展文娛消費空間?

打造新生代潮玩聚集地,打造演藝新空間,促進虛擬現實體驗等文娛業態場景創新,成為了當下發展文旅消費新場景的一大重要手段。數字人匯集了虛擬現實、增強現實、全息投影、人工智能、實時傳輸語音合成等數字技術,可以利用數字人重構…