USB 序列驅動程式 (Usbser.sys)
重要
本主題適用於程式設計人員。 如果您是客戶遇到 USB 問題,請參閱 針對常見的 USB 問題進行疑難解答
使用 Microsoft 提供的 USB 驅動程式 (Usbser.sys) 進行通訊和 CDC 控制裝置。 Microsoft 建議您盡可能使用 Windows 隨附的驅動程式。
支援的版本
- Windows 11
- Windows 10
適用於
- CDC 控制裝置的裝置製造商
在 Windows 10 中,驅動程式已使用內核模式驅動程序架構重寫,以改善驅動程式的整體穩定性。
- 改善驅動程式的 隨插即用 和電源管理。
- 已新增電源管理功能,例如 USB選擇性暫停。
此外,UWP 應用程式現在可以使用 Windows.Devices.SerialCommunication 命名空間所提供的 API,讓 app 能夠與這些裝置通訊。
Usbser.sys 安裝
為您的通訊和 CDC 控制裝置載入 Microsoft 提供的內建驅動程式 (Usbser.sys) 。
注意
如果您嘗試安裝包含在 Windows 中的 USB 裝置類別驅動程式,則不需要下載驅動程式。 系統會自動安裝它們。 如果未自動安裝,請連絡裝置製造商。 如需 Windows 中包含的 USB 裝置類別驅動程式清單,請參閱 Windows 中包含的 USB 裝置類別驅動程式。
從 Windows 10 開始,Usbser.inf 已新增至 %Systemroot%\INF 目錄,它會將 Usbser.sys 載入為裝置堆疊中 FDO) 的功能裝置物件 (。 如果您的裝置屬於通訊和 CDC 控制裝置類別, 則會自動載入Usbser.sys 。 您不需要撰寫自己的 INF 來參考驅動程式。 驅動程式會根據與 Windows 中包含的其他 USB 裝置類別驅動程式類似的相容識別碼來載入。
USB\Class_02
USB\Class_02&SubClass_02
如果您想要自動載入 Usbser.sys ,請將類別代碼設定為 02,並將 裝置描述元中的子類別代碼設定為 02。 使用此方法時,您不需要為裝置散發 INF 檔案,因為系統使用 Usbser.inf。 如需詳細資訊,請參閱 通訊裝置 1.2 的類別定義。
如果您的裝置指定類別代碼 02,但非 02 的子類別代碼值, Usbser.sys 不會自動載入。 隨插即用 管理員會嘗試尋找驅動程式。 如果找不到適合的驅動程式,裝置可能不會載入驅動程式。 您可能必須載入自己的驅動程式,或撰寫參考另一個內建驅動程式的 INF。
如果您的裝置將類別和子類別代碼指定為 02,而且您要載入另一個驅動程式,而不是 Usbser.sys,則必須撰寫 INF 來指定要安裝之裝置的硬體識別碼和驅動程式。 如需範例,請查看隨附於 範例驅動程式 的 INF 檔案,並尋找類似您裝置的裝置。 如需 INF 區段的相關信息,請參閱 INF 檔案概觀。
設定 Usbser.sys 的選擇性暫停
從 Windows 10 開始, Usbser.sys 支援 USB 選擇性暫停。 它可讓連接的 USB 到序列裝置在未使用時進入低電源狀態,而系統仍處於 S0 狀態。 與裝置的通訊繼續時,裝置可以離開暫停狀態並繼續工作狀態。 此功能預設為停用,而且可以透過設定此登錄機碼下的 IdleUsbSelectiveSuspendPolicy 專案來啟用和設定:
HKEY\_LOCAL\_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\<hardware id>\\<instance id>\\Device Parameters
若要設定 Usbser.sys的電源管理功能,您可以將 IdleUsbSelectiveSuspendPolicy 設定為:
「0x00000001」:在閑置時輸入選擇性暫停,也就是當裝置沒有作用中數據傳輸時。
“0x00000000”:只有在沒有開啟的裝置句柄時,才會輸入選擇性暫停。
您可以透過下列兩種方式之一來新增該專案:
撰寫參考安裝 INF 的 INF,並在 HW 中新增登錄專案 。AddReg 區段。
描述擴充屬性 OS 功能描述項中的登錄專案。 新增自定義屬性區段,將 bPropertyName 字段設定為 Unicode 字串串 “IdleUsbSelectiveSuspendPolicy” 和 wPropertyNameLength 為 62 個字節。 將 bPropertyData 字段設定為 「0x00000001」 或 「0x00000000」。。 屬性值會儲存為位元組由小到小的32位整數。
如需詳細資訊,請參閱 Microsoft OS 描述元。
開發 USB CDC 裝置的 Windows 應用程式
從 Windows 10 開始,Windows 應用程式可以使用 Windows.Devices.SerialCommunication 命名空間,將要求傳送至 Usbser.sys。 它會定義 Windows 執行階段 類別,這些類別可用來透過串行埠或串行埠的一些抽象概念與 USB CDC 裝置通訊。 類別提供功能來探索這類序列裝置、讀取和寫入數據,以及控制流程控制的特定序列屬性,例如設定傳輸速率、訊號狀態。
相關主題
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應