共用方式為


USB 序列驅動程式 (Usbser.sys)

重要

本主題適用於程式設計人員。 如果您是客戶遇到 USB 問題,請參閱 修正 Windows 中的 USB-C 問題

使用Microsoft提供的USB驅動程式 (Usbser.sys) 來進行通訊和 CDC 控制裝置。 Microsoft鼓勵盡可能使用 Windows 隨附的驅動程式。

支援的版本

  • Windows 11
  • Windows 10

適用於

  • CDC 控制裝置的裝置製造商

在 Windows 10 中,驅動程式已使用 內核模式驅動程式架構重寫,以改善驅動程式的整體穩定性。

  • 已改善驅動程式 隨插即用和電源管理。
  • 已新增電源管理功能,例如 USB選擇性暫停

此外,UWP 應用程式現在可以使用 Windows.Devices.SerialCommunication 命名空間所提供的 API,讓應用程式能夠與這些裝置通訊。

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