31

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

C#でドライバーを作成するコード/方法を教えてもらえますか?

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

4

5 に答える 5

29

実際、UMDF はユーザーモードで実行されるため、UMDF を使用する場合は C# でいくつかのドライバーを作成できます (「UMDF の使用を開始する」を参照)。ただし、C/C++ を使用することをお勧めします。

于 2009-06-15T07:15:23.760 に答える
27

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

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

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

于 2009-06-16T14:25:28.757 に答える
11

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

C# ドライバー開発?

于 2009-06-15T05:39:00.637 に答える
9

説明から、Windowsデバイスドライバーを開発するのか、既存のデバイスドライバーを介してハードウェアと対話するのかは明確ではありません。

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

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

于 2009-06-28T14:19:36.937 に答える
1

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

于 2009-06-15T05:38:00.343 に答える