SerCx2 ベースのシリアル コントローラー ドライバーの機能
SerCx2 は、シリアル コントローラー ドライバーをサポートする特別な機能を備えたカーネル モード ドライバー フレームワーク (KMDF) の拡張機能です。 KMDF の詳細については、WDF を使用したドライバーの開発を参照してください。 SerCx2 ベースのシリアル コントローラー ドライバーは、KMDF のメソッドとコールバックを使用して汎用ドライバー操作を実行し、SerCx2 と通信して、シリアル コントローラー ドライバーに固有の操作を実行します。
通常、シリアル コントローラーは、16550 ユニバーサル非同期受信機/送信機 (UART) デバイスとハードウェア レベルで互換性があります。 UART は、パーソナル コンピューティングの初期の頃から、デスクトップ PC のケースにあるシリアル ポートを制御するために使用されてきました。 最近では、シリアル コントローラーがシステム オン チップ (SoC) 集積回路に組み込まれ、他の集積回路との少ないピン数の通信を提供します。 SoC ベースのハードウェア プラットフォームでは、クライアントが I/O リクエストを送信する「シリアル ポート」は、単に SoC チップ上の一連のシリアル インターフェイス ピンです。 詳細については、シリアル コントローラー ドライバーの概要をご覧ください。
Microsoft は、同様のハードウェア機能を持つシリアル コントローラー ファミリ用のシリアル コントローラー ドライバーを提供する場合があります。 または、特別な機能を持つシリアル コントローラーのハードウェア ベンダーが、これらの機能をサポートするカスタム シリアル コントローラー ドライバーを提供する場合があります。
シリアル コントローラー ドライバーは、デバイス ドライバー インターフェイス (DDI) を介して SerCx2 と通信します。 SerCx2 DDI は 2 つの部分から構成されています:
- SerCx2 によって実装され、シリアル コントローラー ドライバーによって呼び出されるドライバー サポート メソッドのセット。
- シリアル コントローラー ドライバーによって実装され、SerCx2 によって呼び出される一連のイベント コールバック関数。
SerCx2 DDI のメソッドとコールバックの詳細については、sercx.h header トピックのバージョン 2 シリアル フレームワーク拡張機能 (SerCx2) リファレンスをご覧ください。
ハードウェア ベンダーは、スタンドアロンのシリアル コントローラー ドライバを書くオプションを持っていますが、そのためには多大な労力を必要とします。 比較すると、SerCx2 を使用するシリアルコントローラードライバーの開発はより簡単で、通常、より小さく信頼性の高いドライバーになります。
SerCx2 は、コントローラー ドライバーに代わって次のタスクを管理します。
- 読み書き操作
- シリアルI/Oタイムアウト検出
- ハードウェア イベント
- システム DMA 転送 (システム DMA トランザクションがサポートされている場合)
- 低電力デバイス状態への遷移とそこからの遷移
- I/O リクエストのキャンセル (カスタム I/O トランザクション中を除く)
読み取りと書き込みを管理するために、SerCx2はクライアントからの IRP_MJ_READ と IRP_MJ_WRITE 要求を、シリアル コントローラ ドライバが処理するための比較的単純なI/Oトランザクションに変換します。 詳細については、SerCx2 I/O Transactions をご覧ください。
SerCx2 は、Windows に Sercx2.sys という名前のコンポーネントとして含まれています。 シリアル コントローラー ドライバーは、SerCx2 ライブラリである Sercxstubs.lib (バージョン 2.0) に静的にリンクし、実行時に Sercx2.sys と通信します。 SerCx2 DDI は、2.0\Sercx.h ヘッダー ファイルで定義されています。 Sercxstubs.lib および Sercx.h は、Windows 8.1 用の Windows Driver Kit に含まれています。