Windows 中的 USB - 常見問題

本主題針對不熟悉開發及整合 USB 裝置和驅動程式與 Windows 作業系統的驅動程式開發人員,提供常見問題。

我聽到許多USB詞彙幾乎交替擲回。 它們全都代表什麼意思?

假設您看到類似 「感謝 USB 3.0,我可以將 SuperSpeed USB Thumb 磁碟驅動器連線到電腦的 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) ,以及最高 12 Mbps) 的全速 USB (。 USB 2.0 定義新的數據速率、高速USB (480 Mbps) ,同時維持低速和全速裝置的支援。 USB 3.0 會繼續處理所有先前定義的數據速率。 如果您查看產品封裝,SuperSpeed USB 會參考最新的 USB 3.0 裝置。 Hi-Speed USB 可用來描述高速 USB 2.0 裝置。 沒有描述項的 USB 是指低速和全速裝置。

除了USB通訊協定之外,還有第二個USB主機控制器規格,這是裝置所連線電腦上的硬體片段。 主機控制器介面規格會定義主機控制器硬體和軟體的互動方式。 eXtensible 主機控制器介面 (xHCI) 定義 USB 3.0 主機控制器。 增強型主機控制器介面 (EHCI) 定義 USB 2.0 主機控制器。 通用主機控制器 (UHCI) 和 Open Host Controller (OHCI) 是 USB 1.0 主機控制器的兩個替代實作。

我的電腦是否有USB 3.0埠?

USB 3.0 埠標示為 SuperSpeed USB 標誌,或埠通常是藍色。

具有usb標誌的埠

藍色usb 3.0埠

較新的電腦同時具有USB 3.0和USB 2.0埠。 如果您想要讓 SuperSpeed USB 裝置以最高速度執行,請尋找 USB 3.0 埠,並將裝置連線到該埠。 連線 USB 2.0 埠的 SuperSpeed 裝置會以高速運作。

您也可以確認特定埠是 裝置管理員 中的 USB 3.0 埠。 在 Windows Vista 或更新版本的 Windows 中,開啟 裝置管理員,然後從清單中選取埠。

設備管理器中的usb主機控制器

如果您有 eXtensible 主機控制器,它支援 USB 3.0。

我需要為 eXtensible 主機控制器安裝驅動程式嗎?

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 驅動程式堆疊無法與 一元邏輯 FL1000 控制器搭配運作。 若要判斷您是否擁有 FL1000 控制器,請開啟 裝置管理員,然後展開 [通用序列總線控制器]。 選取並按住 (或以滑鼠右鍵按兩下控制器節點) ,以檢視控制器屬性。 在 [ 詳細數據] 索引 標籤上,選取清單中的 [硬體標識符 ] 屬性。 如果硬體標識碼以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 中樞,來支援所有速度。

開啟 裝置管理員,依聯機檢視 [裝置],然後找出您的 eXtensible 主機控制器。 當您將單一 USB 3.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 驅動程式堆疊中驅動程式的詳細資訊,請參閱 Windows 中的 USB 主機端驅動程式

如果計算機的 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 訊息。

  1. 開啟 [常用鍵列] (將游標拖曳到畫面的右上角、輸入 Windows Key + C,或使用手指向右撥動) 。
  2. 選取 [設定 ],然後 選取 [變更計算機設定]。
  3. 選取 [計算機設定] 底下的 [裝置]。

此影像顯示 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 時可以更快執行」訊息。

您可以在 [裝置和印表機] 中檢視類似的訊息,如這些影像所示。

顯示 [存儲設備 - 裝置和印表機] 的螢幕快照,其中已選取 [已連線到 U S B 3.0] 訊息的裝置。

以高速運作的超速度裝置

如果USB 3.0裝置是儲存設備,Windows 檔案總管會在選取磁碟區標籤時顯示類似的訊息,如下所示。 請注意,必須選取 [ 檢視 -> 詳細數據] 窗格,才能顯示訊息。

此螢幕快照顯示 [總管] 中選取的已取代 U B 裝置,其中已醒目提示 [詳細數據] 窗格中的 [已連線到 U S B 3.0] 訊息。

超速度USB裝置以高速運作

如果您要撰寫設備驅動器,則 Windows 驅動程式套件中隨附的 USBView 工具 (WDK) 非常有用。 針對 Windows 8 WDK,Microsoft 已更新 USBView 以顯示超級 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中樞,任何連接的SuperSpeedUSB裝置都會以高速運作。 將中樞取代為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 裝置的韌體。 某些超級 USB 裝置製造商會針對裝置中找到的錯誤發行修正程式,以作為韌體更新。

  • 主控制器上的韌體已過期。

    從計算機製造商的網站或從卡片製造商網站取得最新版本,以更新USB 3.0控制器的韌體。 某些USB 3.0控制器製造商會針對控制器中找到的錯誤發行修正程式,以作為韌體更新。

  • 您系統的 BIOS 已過期。

    從計算機製作者取得最新版本,以更新系統的BIOS。 在某些主機板上,BIOS 無法正確地將連接到 xHCI 主控制器的裝置路由傳送至 EHCI 控制器。 不正確路由會強制超級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 Hi-Speed 和 SuperSpeed,請參閱: https://www.usb.org/

我是否需要重寫客戶端驅動程式以支援USB 3.0裝置?

所有現有的用戶端驅動程式都應該繼續運作,就像是,當低、完整或高速裝置連線到 USB 3.0 埠時。 在 Windows 8 中,我們已確保與現有的用戶端驅動程式相容。

USB 3.0 驅動程式堆疊會維護 IRQL 層級、呼叫端內容和錯誤狀態;重試與裝置互動的頻率和計時,以及更多功能,以確保現有的驅動程式可繼續運作。 測試仍然很重要。

常見的失敗是因為:

  • 驅動程式的端點描述元剖析中斷,因為 SuperSpeed 端點隨附描述元存在。
  • 由於速度增加,您可能會在應用程式通訊協定層級遇到計時問題。
  • 端點所支援的封包大小上限可能不同。
  • 由於功能電源管理,選擇性暫停作業的時間可能不同。

在 Windows 7 和舊版作業系統中,USB 3.0 驅動程式堆疊是由第三方提供。 因此,強烈建議您測試驅動程式以使用第三方 USB 驅動程式堆疊。

適用於高速和超級 USB 裝置 Windows 8 的新用戶端驅動程式應該選擇新功能。

我的超級記憶體裝置會載入哪個驅動程式,Uaspstor.sys 或 Usbstor.sys?

USB 附加的 SCSI (UAS) 通訊協定是新的大量儲存通訊協定,其設計目的是為了改善已建立的 USB 大量儲存通訊協定、大量傳輸 (BOT) 的效能。 其作法是減少通訊協定額外負荷、支援SATA原生命令佇列 (NCQ) ,以及平行處理多個命令。 若要這樣做,UAS 會使用新的 USB 3.0 功能進行稱為數據流的大量傳輸。

現有的大量記憶體驅動程式 Usbstor.sys 會使用 BOT 通訊協定。 其適用於所有速度的裝置,包括超級USB裝置。

針對 Windows 8,Microsoft 包含新的大量儲存類別驅動程式,Uaspstor.sys 使用 UAS 通訊協定。 由於串流是USB 3.0的新功能,因此當硬體支援串流時,Uaspstor.sys 只能在支援串流 (SuperSpeed USB 裝置連線到 xHCI 主控制器) 時使用數據流。 不論主機類型為何,驅動程式也支援軟體串流,因此也可以載入以高速運作的裝置。

如果您將大量儲存裝置連線到 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 類別規格和類別代碼的目前清單,請造訪 位於 https://www.usb.org/documents的 USB DWG 網站。

下表醒目提示 Windows 中支援的 USB DWG 類別,也會識別支援每個類別的 Windows 版本。

類別規格 bDeviceClass 程式代碼 驅動程式名稱 Windows 支援
藍牙類別 0xE0 Bthusb.sys Windows XP 及更新版本
CCID) (晶元/智慧卡介面裝置 0x0B Usbccid.sys

Windows Server 2008 及更新版本

Windows Vista 和更新版本

Windows Server 2003

Windows XP

Windows 2000

Hub 類別 0x09 Usbhub.sys

Windows Server 2003 和更新版本

Windows XP 及更新版本

Windows 2000 和更新版本

人性化介面裝置 (HID) 0x03 Hidusb.sys

Windows Server 2003 和更新版本

Windows XP 及更新版本

Windows 2000 和更新版本

MSC) (大量儲存類別 0x08 Usbstor.sys

Windows Server 2003 和更新版本

Windows XP 及更新版本

Windows 2000 和更新版本

USB 連接的 SCSI (UAS) 0x08 Uaspstor.sys

Windows Server 2012

Windows 8

列印類別 0x07 Usbprint.sys

Windows Server 2003 和更新版本

Windows XP 及更新版本

Windows 2000 和更新版本

掃描/映像處理 (PTP) 0x06

WpdUsb.sys

Usbscan.sys

Windows Server 2003 和更新版本

Windows XP 及更新版本

Windows 2000 和更新版本

媒體傳輸 (MTP) 0x06 WpdUsb.sys

Windows Server 2003 和更新版本

Windows XP 及更新版本

USB 音訊類別 0x01 Usbaudio.sys

Windows Server 2003 和更新版本

Windows XP 及更新版本

Windows 2000 和更新版本

CDC) 的數據機類別 ( 0x02 Usbser.sys

Windows Server 2003 和更新版本

Windows XP 及更新版本

Windows 2000 和更新版本

影片類別 (UVC) 0x0E Usbvideo.sys

Windows Vista 和更新版本

Windows XP

*載入此驅動程式需要特殊指示,因為此驅動程式可能晚於操作系統發行。 Windows 類別驅動程式可能不支援 DWG 類別規格中所述的所有功能。 在此情況下,驅動程式不會根據類別比對載入。 如需類別規格內實作功能的其他詳細數據,請參閱 WDK 檔。

我應該針對自定義 USB 裝置使用哪一個裝置設定類別?

Microsoft 為大部分裝置類型提供系統定義的安裝類別。 系統定義的安裝類別 GUID 定義於 Devguid.h 中。 如需詳細資訊,請參閱 WDK。 如需 Windows 類別 GUID 的清單,請參閱下列主題:

獨立硬體廠商必須使用與 USB 裝置類型相關聯的安裝類別,而不是與總線類型相關聯。 如果您要開發 Microsoft 尚未提供現有類別 GUID 的裝置類型,您可以定義新的裝置安裝類別。

在 Windows 8 中,已定義名為 USBDevice (ClassGuid = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}) 的新安裝類別。 如果您要開發裝置類型,請將裝置與 USBDevice 建立關聯,而不是安裝類別 USBUSBDevice 類別適用於 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。 如需選擇性暫停的其他資訊,請參閱 WDK。

哪些 USB 類別驅動程式支援選擇性暫停?

以下是支援選擇性暫停 Windows 8 中的 USB 類別驅動程式清單:

  • 藍牙

    此驅動程式可以在執行 Windows XP Service Pack 2 和更新版本的 Windows 電腦上選擇性地暫停裝置。 驅動程式需要藍牙無線電,才能在組態描述元中設定自我電源和遠端喚醒位。 當沒有作用中的藍牙連線存在時,驅動程式會選擇性地暫停 (D2) 藍牙無線電。

  • USB HID

    此驅動程式可以選擇性地暫停 HID 裝置。 您必須負責在所有裝置狀態變更上觸發遠端喚醒訊號。 若要在 HID 堆疊中啟用選擇性暫停,必須針對裝置的特定 VID+PID 啟用 SelectiveSuspendEnabled 登錄值。 如需範例,請參閱 Input.inf。

    在支援 Windows 8 連線待命的系統上,當系統處於連線待命時,此驅動程式會進入選擇性暫停 (D2) 。 此驅動程式可以喚醒系統並開啟畫面。

  • USB 集線器

    此驅動程式可以選擇性地在沒有任何裝置連結至該中樞時,或當所有連結至該中樞的裝置都可以選擇性地暫停時,暫停根或外部中樞。

  • USB 數據機

    當沒有作用中的數據機連線存在時,此驅動程式可以選擇性地暫停裝置。

  • USB 記憶體 (BOT)

    當這些系統進入連線待命時,此驅動程式可以選擇性地暫停 (D3) 支援 Windows 8 連線待命的系統上儲存裝置。 如同 HID,登錄覆寫可讓您在所有 Windows 8 系統上啟用選擇性暫停。

  • USB 記憶體 (UAS)

    此驅動程式可以在磁碟逾時期間閑置時,選擇性地暫停 (D3) 存儲設備。

  • USB 視訊

    此驅動程式可以選擇性地在 Windows Vista 和更新版本的作業系統上暫停 (D3) 網路攝影機。

  • USB 音訊

    當計算機處於電池電源時,此驅動程式可以選擇性地暫停 (D3) Windows 7 和更新版本的操作系統上的 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,包括下列各項:

  1. BIOS 不正確。

    確認電腦上已安裝最新的 BIOS。 若要取得電腦的最新 BIOS 修訂,請流覽 OEM 或 ODM 的網站。

  2. 未啟用喚醒的BIOS。

    某些BIOS 可讓您停用 S3 和 S4 的喚醒。 確認 BIOS 已啟用從 S3 喚醒。

  3. 未設定 USBBIOSx 登錄機碼。

    Windows XP 的全新安裝沒有 USBBIOSx 登錄機碼。 如果 OEM 或 ODM 驗證 BIOS 可以從 S3 喚醒,請將此登錄機碼設定為 0x00,然後重新啟動電腦。

  4. 主機控制器在 S3 或 S4 中沒有電源。

    當計算機處於較低的電源狀態時,計算機會減少載入宏卡片的電源。 如果載入宏卡片沒有電源,它將無法偵測喚醒事件,也無法喚醒電腦。

如需詳細資訊,請參閱 Windows XP 和更新版本 Windows 中說明與支援中心內的 USB 疑難解答員。

我需要安裝增強型 (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 Update。

是否可以停用「插入非HI-SPEED USB埠的HI-SPEED USB裝置」通知?

當Hi-Speed USB 裝置插入不支援高速的USB埠時,Windows XP 和更新版本的 Windows 會建立快顯通知。 若要從裝置取得最快的效能,用戶必須選取通知,並遵循畫面上的指示。

若要停用通知,請遵循下列步驟:

  1. 開始 裝置管理員,如本常見問題中的第一個問題所述。
  2. 在 [裝置管理員] 視窗中,展開 [通用序列總線控制器] 節點。 尋找標題中有 「Universal」 或 「Open」 一詞的主控制器。 如果您找到一個,請按兩下它。
  3. 在 [屬性] 對話框的 [進階] 索引標籤上,選取 [不要告知我 USB 錯誤]。

注意 上述程式會停用所有 USB 通知,而不只是「插入非 HI-SPEED 埠的 HI-SPEED USB 裝置」。

我的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.1 和 11.23.1 節。

USB 序號中有哪些字元或位元組有效?

USB 裝置描述符的 iSerialNumber 字段會指出裝置是否有序號,以及儲存號碼的位置,如下所示:

  • iSerialNumber == 0x00:USB 裝置沒有序號。
  • iSerialNumber != 0x00:USB 裝置有序號。 指派給 iSerialNumber 的值是序號的字串索引。

如果裝置有序號,序號必須唯一識別相同裝置的每個實例。

例如,如果兩個裝置描述項具有 idVendoridProductbcdDevice 欄位的相同值, 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 版本:

  • 介面的預設值一律為替代設定零。
  • 其他替代設定數位必須連續且增加。

如需替代設定的其他資訊,請參閱 USB 2.0 規格的第 9.6.5 節。

Usbccgp.sys 所加加的主要限制為何?

Usbccgp.sys 支援下列項目的複合裝置:

  • Windows Me
  • Windows XP
  • Windows Server 2003
  • Windows Vista
  • Windows Server 2008

雖然可能仍可載入 Usbhub.sys 作為這些和更新版本 Windows 上複合裝置的父驅動程式,但 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,複合裝置只有在裝置的每個子函式都有擱置的閑置 IRP 時,才會進入選擇性暫停。 Usbccgp 不支援 Windows XP RTM 中的選擇性暫停

  • Usbccgp 僅支援 Windows XP SP2、Windows Server 2003 SP1 和更新版本的 Windows (IAD) 介面關聯描述元。

  • Usbccgp 僅在 Windows XP SP2、Windows Server 2003 SP1 和更新版本的 Windows 中支援非安全介面編號。

如何? 啟用 USB 核心二進位檔的偵錯追蹤?

請參閱部落格文章 ,以瞭解如何在驅動程式的公用 PDB 檔案中包含及檢視 WPP 追蹤訊息

如需 USB 裝置和 ETW 事件的相關信息,請參閱 使用 ETW 事件對 USB 裝置問題進行偵錯。

Windows 是否支援介面關聯描述元?

是的 USB 2.0 介面關聯描述元 (IAD) 工程變更通知 (ECN) 引進了新的標準方法,用來描述介面群組及其函式內的替代設定。 IAD 可用來識別一個函式內的兩個或多個連續介面和替代設定。

Microsoft 目前正在與 IHD 合作,以開發支援 IAD 的裝置。 下列作業系統支援 IAD:

  • Windows XP Service Pack 2 和更新版本
  • Windows Server 2003 Service Pack 1 和更新版本
  • Windows Vista

USB 堆疊會處理 URL 中鏈結的 MDL 嗎?

Windows 隨附的 USB 3.0 驅動程式堆疊支援此功能。

驅動程式是否可以在 IRP 中有多個 URB?

不是 Windows 隨附的 USB 堆疊不支援這項功能。

Windows 是否支援 USB 複合中樞?

複合 USB 裝置也稱為多重功能 USB 裝置 - 會公開多個功能,每個函式都可以視為獨立裝置。 系統會載入 USB 泛型父驅動程式 Usbccgp.sys,以作為裝置函式的父驅動程式。 USB 泛型父驅動程式會列舉複合裝置的功能,就像是個別的 USB 裝置一樣,然後建立 PDO 併為每個函式建構裝置堆疊。

複合 USB 裝置無法公開做為中樞的函式。 Windows 不會正確列舉這類中樞,而且嘗試安裝裝置可能會導致系統損毀。