USB シリアル ドライバー (Usbser.sys)

重要

このトピックはプログラマーを対象としています。 USB に関する問題が発生している場合は、「一般的な USB の問題のトラブルシューティング」を参照してください

サポートされているバージョン

  • Windows 11
  • Windows 10
  • Windows 8.1

適用対象

  • CDC 制御デバイスのデバイス製造元

Microsoft が提供する、お客様のコミュニケーションと CDC 制御デバイス用のインボックスドライバー (Usbser.sys)。

Windows 10 では、ドライバーはカーネルモードドライバーフレームワークを使用して書き換えられ、ドライバーの全体的な安定性が向上しています。

また、UWP アプリケーションでは、Windows によって提供される Api を使用できるようになりました。SerialCommunication名前空間。アプリがこれらのデバイスと通信できるようにします。

Usbser.sys のインストール

通信および CDC 制御デバイス用に、Microsoft が提供するインボックスドライバー (Usbser.sys) を読み込みます。

注意

Windows に含まれている USB デバイス クラス ドライバーをインストールしようとしている場合は、ドライバーをダウンロードする必要はありません。 これらは自動的にインストールされます。 自動的にインストールされない場合は、デバイス製造元にお問い合わせください。 Windows に含まれる USB デバイス クラス ドライバーのリストについては、「Windows に含まれる USB デバイス クラス ドライバー」を参照してください。

Windows 10 以降

Windows 10 から、 usbser .infが%Systemroot%\INF ディレクトリに追加されました。このディレクトリは、デバイススタックで機能しているデバイスオブジェクト (FDO) としてUsbser.sysを読み込みます。 デバイスが通信および CDC 制御デバイスクラスに属している場合は、 Usbser.sys が自動的に読み込まれます。 ドライバーを参照するために独自の INF を記述する必要はありません。 ドライバーは、Windows に含まれる USB デバイス クラス ドライバーと同様に、互換性のある ID の一致に基づいて読み込まれます。

USB\Class_02

USB\Class_02&SubClass_02

  • Usbser.sysを自動的に読み込む場合は、デバイス記述子でクラスコードを02に、サブクラスコードを02に設定します。 詳細については、USB 通信デバイス クラスに関するページを参照してください。 この方法では、システムで Usbser.inf が使用されるため、デバイスの INF ファイルを配布する必要はありません。
  • デバイスでクラスコード02が指定されていても、サブクラスコード値が02以外の場合、 Usbser.sys は自動的に読み込まれません。 プラグアンドプレイマネージャーがドライバーの検索を試みます。 適切なドライバーが見つからない場合、デバイスにドライバーが読み込まれていない可能性があります。 この場合は、独自のドライバーの読み込み、または別のインボックス ドライバーを参照する INF の作成が必要な場合があります。
  • デバイスでクラスとサブクラスのコードを02に指定し、 Usbser.sysではなく別のドライバーを読み込む場合は、デバイスのハードウェア ID とインストールするドライバーを指定する INF を作成する必要があります。 例については、サンプル ドライバーに含まれている INF ファイルを参照し、ご利用のデバイスに類似したデバイスを見つけてください。 INF セクションについては、「INF ファイルの概要」を参照してください。

注意

Microsoft では、可能な限りインボックス ドライバーを使用することをお勧めしています。 Windows 10 Mobile などの Windows のモバイル エディションでは、オペレーティング システムの一部であるドライバーのみが読み込まれます。 デスクトップ エディションとは異なり、外部ドライバー パッケージを使用してドライバーを読み込むことはできません。 新しいインボックス INF を使用すると、モバイルデバイスで USB-シリアルデバイスが検出された場合に、 Usbser.sys が自動的に読み込まれます。

Windows 8.1 以前のバージョン

Windows 8.1 以前のバージョンのオペレーティングシステムでは、USB-シリアルデバイスがコンピューターに接続されている場合、 Usbser.sysは自動的には読み込まれません。 ドライバーを読み込むには、 Includeディレクティブを使用して、モデムの inf (mdmcpq) を参照する inf を作成する必要があります。 ディレクティブは、サービスをインスタンス化し、受信トレイ バイナリをコピーし、アプリケーションでデバイスを検索して通信するために必要なデバイス インターフェイス GUID を登録するために必要です。 この INF では、デバイス スタック内の下位フィルター ドライバーとして "Usbser" を指定します。

また、 mdmcpqを使用するには、デバイスのセットアップクラスをModemとして指定する必要があります。 INF の [ バージョン ] セクションで、 モデム とデバイスクラス GUID を指定します。 詳細については、システム提供のデバイス セットアップ クラスに関するページを参照してください。

[DDInstall.NT]
include=mdmcpq.inf
CopyFiles=FakeModemCopyFileSection

[DDInstall.NT.Services]
include=mdmcpq.inf
AddService=usbser, 0x00000000, LowerFilter_Service_Inst

[DDInstall.NT.HW]
include=mdmcpq.inf
AddReg=LowerFilterAddReg

詳細については、「ユニバーサル シリアル バス (USB) モデム .inf ファイルから Usbser.sys ドライバーを使用または参照する方法」を参照してください。

Usbser.sys 用にセレクティブ サスペンドを構成する

Windows 10 以降では、 Usbser.sysUSB セレクティブサスペンドをサポートしています。 これにより、システムが S0 状態のままになっている間は、接続されている USB シリアル デバイスは、使用されていないときに低電力状態になることができます。 デバイスとの通信が再開されると、デバイスは中断状態のままになり、動作状態を再開できます。 この機能は、既定では無効になっており、このレジストリ キーの下に IdleUsbSelectiveSuspendPolicy エントリを設定することによって有効にし、構成することができます。

HKEY\_LOCAL\_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\<hardware id>\\<instance id>\\Device Parameters

Usbser.sysの電源管理機能を構成するには、 IdleUsbSelectiveSuspendPolicyを次のように設定します。

  • "0x00000001":アイドル時、つまり、デバイス間でアクティブなデータ転送がない場合は、セレクティブ サスペンドになります。

  • "0x00000000":デバイスに対して開いているハンドルがない場合にのみ、セレクティブ サスペンドになります。

このエントリは、次の 2 つの方法のいずれかで追加できます。

  • インストール INF を参照する INF を作成し、HW.AddReg セクションにレジストリ エントリを追加します。

  • 拡張プロパティの OS 機能記述子にレジストリ エントリを記述します。 bPropertyName フィールドを Unicode 文字列 "IdleUsbSelectiveSuspendPolicy" に、wPropertyNameLength を 62 バイトに設定するカスタム プロパティ セクションを追加します。 bPropertyData フィールドを "0x00000001" または "0x00000000" に設定します。 プロパティ値は、リトルエンディアンの 32 ビット整数として格納されます。

    詳細については、「Microsoft OS 記述子」を参照してください。

USB CDC デバイス用に Windows アプリケーションを開発する

USB CDC デバイスの Usbser.sys をインストールする場合、アプリケーションプログラミングモデルのオプションは次のとおりです。

  • Windows 10 以降、Windows アプリは Windows を使用してUsbser.sysに要求を送信できます。SerialCommunication名前空間。 シリアル ポート、またはシリアル ポートの何らかの抽象化を介して USB CDC デバイスと通信するために使用できる、Windows ランタイム クラスが定義されます。 クラスでは、このようなシリアル デバイスを検出し、データの読み取りと書き込みを行い、フロー制御のためのシリアル固有のプロパティ (ボー レートの設定、シグナルの状態など) を制御するための機能が提供されます。

  • Windows 8.1 以前のバージョンでは、仮想 COM ポートを開き、デバイスと通信する Windows デスクトップ アプリケーションを作成できます。 詳細については、次を参照してください。

    Win32 プログラミング モデル:

Windows に含まれる USB デバイス クラス ドライバー