以前は C/C++ で書いていましたが、現在は C# に変換する必要があります。
C#でドライバーを作成するコード/方法を教えてもらえますか?
実際、現在、C++ で書かれた古いアプリケーションに問題があり、LPT1、COM プリンター、およびその他の USB ドライバーのドライバーを C# で作成する必要があります。
実際、UMDF はユーザーモードで実行されるため、UMDF を使用する場合は C# でいくつかのドライバーを作成できます (「UMDF の使用を開始する」を参照)。ただし、C/C++ を使用することをお勧めします。
単にできません。C# は、仮想マシン (.NET) によって解釈される中間言語を生成します。これらはすべてユーザー モードで実行され、WDM ドライバーはカーネル モードで実行されます。
DDK はありますが、VStudio でもサポートされていません (ただし、コンパイル用の makefile プロジェクトを作成することはできます)。
ドライバーの開発は複雑で、ブルー スクリーンが発生しやすく、C、カーネル構造、およびメモリ操作をよく理解している必要があります。C# と .NET にはこれらのスキルは必要ないため、長くて苦痛を伴うトレーニング パスがあります。
C# でカーネル モード ドライバーを作成することはできません (ランタイムはユーザー モードで実行されるため、ring0 に入ることができません)。この SO Q/A には、役立つリンクがいくつか含まれています。
説明から、Windowsデバイスドライバーを開発するのか、既存のデバイスドライバーを介してハードウェアと対話するのかは明確ではありません。
たとえば、シリアルポートに接続されているデバイスとやり取りするために、独自のドライバーを作成する必要はありません。実際、.NETのSerialPort
クラスを介してアクセスできます。
USBデバイスでさえ、 libusb-win32、WinUSBなどのフレームワークを介してユーザースペース(そして最終的にはマネージコード)からアクセスできます。
C# でドライバーを作成することはできません。ハードウェアと対話できるようにするには、ドライバーを昇格した特権で実行する必要があります。マネージ コードは、適切な環境では実行できません。