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

Microsoft によって提供される、通信および CDC 制御用デバイス用インボックス ドライバー (Usbser.sys) です。

Windows 10 では、ドライバーの全体的な安定性を高める カーネル モード ドライバー フレームワークを使って、ドライバーが再作成されています。

さらに、Windows ストア アプリケーションが、新しい Windows.Devices.SerialCommunication 名前空間で提供される API を使えるようになり、アプリがこれらのデバイスと通信できるようになりました。

Usbser.sys のインストール

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

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

Windows 10

Windows 10 では、新しい INF である Usbser.inf が %Systemroot%\Inf に追加されています。この INF は、Usbser.sys をファンクション デバイス オブジェクト (FDO) としてデバイス スタックに読み込みます。デバイスが、通信と CDC 制御のデバイス クラスに属している場合は、Usbser.sys が自動的に読み込まれます。ドライバーは、 Windows に用意されている他の USB デバイス クラス ドライバーと同様の、互換性のある ID の一致に基づいて読み込まれます。

USB\Class_02

USB\Class_02&SubClass_02

  • Usbser.sys を自動的に読み込む場合は、 デバイス記述子でクラス コードを 02 に、サブクラス コードを 02 に設定します。詳細については、 USB DWG の Web サイトにある USB 通信デバイス クラス (または USB CDC) 仕様をご覧ください。この方法では、システムが Usbser.inf を使っているため、デバイス用の INF ファイルを配布する必要はありません。
  • デバイスがクラス コード 02 を指定しているが、02 以外のサブクラス コード値を指定している場合は、Usbser.sys が自動的に読み込まれません。Pnp マネージャーはドライバーを見つけようとします。適切なドライバーが見つからない場合は、デバイスにドライバーが読み込まれていない可能性があります。この場合は、独自のドライバーを読み込むか、別のインボックス ドライバーを参照する 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 が自動的に読み込まれません。ドライバーを読み込むには、モデムの INF (mdmcpq.inf) を参照し、[Install] セクションと [Needs] セクションを含む INF を作成する必要があります。サービスのインスタンス化、インボックス バイナリのコピー、アプリケーションがデバイスを検索して対話するために必要なデバイス インターフェイス GUID の登録には、これらのセクションが必要です。INF は、デバイス スタックの下位フィルター ドライバーとして "Usbser" を指定します。

[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

詳しくは、 このサポート技術情報の記事をご覧ください。

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 アプリケーションの開発

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

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

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

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

    .NET Framework プログラミング モデル:

関連トピック

Windows に用意されている USB デバイス クラス ドライバー