共用方式為


Windows 的 USB 事件追蹤概觀

本主題提供客戶端驅動程式開發人員有關通用序列總線 (USB) 追蹤和記錄功能的資訊。 這項資訊是針對開發及偵錯 USB 裝置的人員所提供。 其中包含如何安裝工具、建立追蹤檔案,以及分析USB追蹤檔案中事件的相關信息。 本主題假設您已全面瞭解成功使用USB追蹤和記錄功能所需的USB生態系統和硬體。

若要解譯事件追蹤,您也必須瞭解 Windows 中的 Windows USB 主機端驅動程式、官方 USB 規格和 USB 裝置類別規格

關於 Windows 的事件追蹤

Windows 事件追蹤 (ETW) 是作業系統所提供的一般用途高速追蹤設施。 它會使用在核心中實作的緩衝和記錄機制,為使用者模式應用程式和內核模式設備驅動器所引發的事件提供追蹤機制。 此外,ETW 提供動態啟用和停用記錄的功能,可讓您輕鬆地在生產環境中執行詳細的追蹤,而不需要重新啟動或應用程式重新啟動。 記錄機制會使用異步寫入器線程寫入磁碟的每個處理器緩衝區。 此緩衝可讓大規模的伺服器應用程式以最小干擾寫入事件。

ETW 已在 Windows 2000 中引進。 此後,各種核心操作系統和伺服器元件都採用 ETW 來檢測其活動。 ETW 現在是 Windows 平臺上的重要檢測技術之一。 越來越多的第三方應用程式使用 ETW 進行檢測,有些應用程式會利用 Windows 所提供的事件。 ETW 也已抽象化為 Windows 預處理器 (WPP) 軟體追蹤技術,提供一組易於使用的宏來追蹤 printf 樣式的訊息,以在開發期間進行偵錯。

ETW 已大幅升級 Windows Vista 和 Windows 7。 其中一個最重要的新功能是整合事件提供者模型和 API。 簡言之,新的整合 API 會將記錄追蹤和寫入 事件檢視器 合併成事件提供者的一個一致且易於使用的機制。 同時,已將數個新功能新增至 ETW,以改善開發人員和用戶體驗。

如需 ETW 和 WPP 的詳細資訊,請參閱 Windows 事件追蹤和 事件追蹤 (ETW)

ETW 記錄的USB支援

USB 是將各種周邊裝置連線到電腦的最普遍方式之一。 有一個非常龐大的USB主機電腦和USB周邊裝置,以及系統廠商、裝置廠商和終端使用者預期並要求USB裝置在系統和裝置層級完美運作。

大型安裝的 USB 裝置基底和擴散已發現 Windows USB 軟體堆疊、USB 主機控制器和 USB 裝置之間的相容性問題。 這些相容性問題會導致客戶發生問題,例如裝置作業失敗、系統停止響應和系統當機。

如果無法直接存取系統和/或裝置,或在某些情況下發生系統損毀傾印,就很難或無法調查和偵錯 USB 裝置問題。 即使完全存取硬體和損毀傾印,擷取相關信息也是一種時間密集型技術,只有少數核心 USB 驅動程式開發人員才知道。 您可以使用硬體或軟體分析器來偵錯 USB 問題,但它們非常昂貴,而且只有少數專業人員可以使用。

USB ETW 支援

ETW 提供事件記錄機制,讓USB驅動程式堆疊可以惡意探索,以協助調查、診斷和偵錯USB相關問題。 USB 驅動程式堆疊 ETW 事件記錄支援 USB 驅動程式堆疊中現有臨機操作記錄機制所提供的大部分或所有偵錯功能,但沒有任何限制。 這可簡化 USB 相關問題的偵錯,這應該會在長期提供更健全的 USB 驅動程式堆疊。

我們已將 ETW 記錄新增至 USB 主機控制器驅動程式和 USB 中樞驅動程式。 USB 主機控制器驅動程式層包含主機控制器埠驅動程式(usbport.sys)和迷你埠驅動程式(usbehci.sys、usbohci.sys和usbuhci.sys)。 USB 中樞驅動程式層是由 USB 中樞驅動程式 (usbhub.sys) 所組成。

  • USB 中樞事件

    啟用USB事件收集時,USB 中樞事件提供者會報告新增和移除USB中樞、所有中樞的裝置摘要事件,以及埠狀態變更。 您可以使用這些事件來判斷大多數裝置列舉失敗的根本原因。

  • USB 埠事件

    啟用USB事件收集時,USB埠事件提供者會從用戶端驅動程序報告I/O、開啟和關閉裝置端點,以及迷你埠狀態轉換,例如迷你埠啟動和停止。 記錄的 I/O 包含實體 USB 埠狀態的要求。 實體USB埠上的狀態轉換是核心USB驅動程式堆疊中活動的主要啟動器之一。

Windows 提供 USB 驅動程式堆疊來支援 USB 3.0 裝置。 Microsoft提供的 USB 3.0 驅動程式堆疊包含三個驅動程式:Usbxhci.sys、Ucx01000.sys和Usbhub3.sys。 這三個驅動程式都會一起運作,為大部分 USB 3.0 主機控制器新增原生支援。 新的驅動程式堆疊支援 SuperSpeed、高速、全速和低速裝置。 透過事件追蹤,USB 3.0 驅動程式堆疊可檢視主機控制器及其連線的所有裝置的精細活動。

  • USB Hub3 事件

    啟用USB事件收集時,USB Hub3事件提供者會報告新增和移除USB中樞、所有中樞的裝置摘要事件、埠狀態變更,以及USB裝置和中樞的電源狀態。 埠狀態變更是實體 USB 埠的狀態轉換,而且是核心 USB 驅動程式堆疊中活動的主要啟動器之一。 Hub3 會報告列舉程序的階段,這指向大多數裝置列舉失敗的根本原因。 啟用 StateMachine 關鍵詞後,Hub3 會報告軟體裝置、中樞和埠物件的內部狀態機器活動,以深入了解驅動程式的邏輯。

  • USB UCX 事件

    啟用 USB 事件收集時,USB UCX 事件提供者會從用戶端驅動程式報告 I/O,以及開啟和關閉裝置端點和端點數據流。 啟用 StateMachine 關鍵詞後,UCX 會報告主機控制器和端點對象的內部狀態機器活動,以更深入地查看驅動程式的邏輯。

  • USB xHCI 事件

    啟用USB事件收集時,USB xHCI事件提供者會報告系統 xHCI 控制器的屬性,以及 xHCI 作業的低階詳細數據。 xHCI 會報告 xHCI 硬體傳送和完成的命令要求,包括 xHCI 特定的完成代碼。

本節內容

主題 說明
如何使用Logman擷取USB事件追蹤 本主題提供使用 Logman 工具來擷取 USB ETW 事件追蹤的相關信息。 Logman 是 Windows 內建的追蹤工具。 您可以使用 Logman 將事件擷取到事件追蹤記錄檔。
在 USB ETW 追蹤中使用活動識別碼 GUID 本主題提供活動標識碼 GUID 的相關信息、如何在事件追蹤提供者中新增這些 GUID,並在 Netmon 中檢視這些 GUID。
Netmon 中的 USB ETW 追蹤 您可以使用Microsoft網路監視器來檢視 USB ETW 事件追蹤,也稱為 Netmon。 Netmon 不會自動剖析追蹤。 它需要USB ETW剖析器。 USB ETW 剖析器是文本檔,以網路監視器剖析器語言(NPL)撰寫,描述 USB ETW 事件追蹤的結構。 剖析器也會定義 USB 特定的數據行和篩選。 這些剖析器可讓 Netmon 成為分析 USB ETW 追蹤的最佳工具。
搭配USB ETW使用 Xperf 本主題描述如何搭配 Netmon 使用 Xperf 來分析 USB 追蹤數據。
USB ETW 和電源管理 本主題提供使用 ETW 來檢查 USB 選擇性暫停狀態和使用 Windows PowerCfg 公用程式識別系統能源效率問題的簡短概觀。