以前のバージョンの Windows - シリアル コントローラー ドライバーの概要

Windows では従来のシリアル コントローラー デバイスのドライバーサポートが提供されています。 シリアル コントローラーという用語は、16550 UART (Universal Asynchronous Receiver-Transmitter、汎用非同期式送受信機) またはその互換デバイスを指します。 シリアル コントローラーにはシリアル ポートがあり、これを通じてシリアル接続された周辺機器と通信します。 Windows は、シリアル通信をサポートするために Serial.sys ドライバーと Serenum.sys ドライバー、バージョン 1 とバージョン 2 のシリアル フレームワーク拡張機能 (SerCx と SerCx2) を搭載しています。

SerCx

Windows 8 での SerCx は、プリント基板上の集積回路間のシリアル通信をサポートする、システム提供コンポーネントです。 SerCx は、カーネル モード ドライバー フレームワーク (KMDF) の拡張機能です。 この拡張機能により、シリアル コントローラー用のカスタム ドライバーの開発が簡略化されます。 SerCx は、シリアル コントローラーに共通する多数の処理タスクを実行するかたちで、拡張機能ベースのシリアル コントローラー ドライバーを支援します。 このドライバーは、SerCx デバイス ドライバー インターフェイスを介して SerCx と通信します。

SerCx2

Windows 8.1 以降、SerCx は SerCx2 に置き換えられています。 SerCx2 は、多くの点で SerCx から進歩していて、シリアル コントローラー ドライバーのサイズと複雑さが軽減されます。 具体的に言うと、SerCx2 は、タイムアウトの管理に必要な処理と、シリアル コントローラーへのアクセスで競合する I/O トランザクションの調整に必要な処理から、シリアル コントローラー ドライバーを解放します。 その結果、シリアル コントローラー ドライバーのサイズが小さくなり、よりシンプルになります。 シリアル コントローラーのハードウェア ベンダーは、シリアル コントローラーのハードウェア固有の機能を管理し、SerCx2 に依存して汎用シリアル コントローラー タスクを実行する拡張機能ベースのシリアル コントローラー ドライバーを提供します。 このドライバーは、SerCx2 デバイス ドライバー インターフェイスを介して SerCx2 と通信します。

SerCx2 の詳細については、「シリアル フレームワーク拡張機能 (SerCx2) バージョン 2 の使用」を参照してください。

ドライバー フレームワークの一般的な情報については、「WDF を使用したドライバーの開発」を参照してください。

Serial.sys と Serenum.sys

Windows 2000 などの以前のバージョンの Windows では、システムが提供するシリアル ドライバーである Serial.sys が、スタンドアロンのシリアル ポート、COM ポート、マルチポート ボードをサポートしていました。 システム提供のシリアル列挙ドライバーである Serenum.sys は、Serial.sys またはその互換シリアル ポート ドライバーによって制御されるシリアル ポートに接続されているデバイスを列挙します。 Serial.sys は主に、Windows を実行している PC のケースに物理的に配置されている COM ポート (通常は COM1 や COM2 と呼ばれます) を制御します。 これらのポートは大まかには RS-232 標準に準拠していますが、PC をサポートするために進化した事実上の標準 (電圧レベル、ピン接続、ハードウェア フロー制御など) も組み込まれています。 詳細については、「Serial.sys と Serenum.sys を使用する」を参照してください。

GitHub の Windows ドライバー サンプル リポジトリには、Serial ドライバーのサンプルと Serenum ドライバーのサンプルのソース コードが含まれています。これらはインボックス Serial.sys ドライバーや Serenum.sys ドライバーと同様に動作し、代わりにインストールできます。