Share via


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 裝置通訊。 類別提供功能來探索這類序列裝置、讀取和寫入數據,以及控制流程控制的特定序列屬性,例如設定傳輸速率、訊號狀態。