web-dev-qa-db-ja.com

C#でのドライバーの作成

以前にC/C++で記述しましたが、現在はC#に変換する必要があります。

誰でも私にコード/方法を教えてもらえますか?C#でドライバーを書く方法

実際、現在、C++で記述された古いアプリケーションに問題があり、LPT1、COMプリンターのドライバー、およびその他のUSBドライバーをC#で記述する必要があります。

28
Gaurav Aroraa

単にできません。 C#は、仮想マシン(.NET)によって解釈される中間言語を生成します。これらはすべてユーザーモードで実行され、WDMドライバーはカーネルモードで実行されます。

DDKはありますが、VStudioでもサポートされていません(ただし、メイクファイルプロジェクトを作成してコンパイルできます)。

ドライバーの開発は複雑で、ブルースクリーンが発生しやすく、C、カーネル構造、およびmem操作を十分に理解する必要があります。 C#および.NETにはこれらのスキルは必要ありません。そのため、長くてつらいトレーニングパスがあります。

24
No hay Problema

実際、UMDFを使用する場合、ユーザーモードで実行されるため、C#でいくつかのドライバーを作成できます( UMDFの概要 を参照)。しかし、私の推奨はC/C++を使用することです。

27
Sergey Podobry

C#でカーネルモードドライバーを作成することはできません(ランタイムはユーザーモードで実行されるため、ring0に入ることができません)。これは、SO Q/Aに役立つリンクがいくつかあります。

C#ドライバー開発?

11
Robert Horvick

Windowsデバイスドライバーを開発するつもりなのか、それとも既存のデバイスドライバーを介してハードウェアとやり取りするつもりなのか、説明からはわかりません。

たとえば、シリアルポートに接続されているデバイスとやり取りするために、独自のドライバーを作成する必要はありません。実際には、.NETの SerialPort クラスを介してドライバーにアクセスできます。

libusb-win32WinUSB などのフレームワークを介して、USBデバイスでさえユーザースペース(および最終的にはマネージコード)からアクセスできます。

8
Ilya

C#でドライバーを作成することはできません。ドライバは、ハードウェアと通信できるように昇格された特権で実行する必要があります。マネージコードは適切な環境では実行できません。

1
Paul Sonier