18

C# に真っ向から飛び込む前に...

Windows でドライバーを開発するには、C、または C++ が最適だと常に感じていました。私は、.NET マシンでドライバーを開発するという考えにはあまり興味がありません。

しかし、.NET は、MS がアプリケーション開発に向かっている方法のようです。

  • ドライバーの開発に C# を使用している人はいますか?
  • 多くの API フックを実行する必要がありますか?それとも、C# には多くのハッカーなしでカーネルとインターフェイスする機能がありますか?
  • 通常よりもリング 0 に近い場所で C# プログラムを実行することの信頼性と安全性について話せる人はいますか?

私は自分のデバイスを C# で使用できるようにしたいと考えています。C# のドライバー開発が成熟している場合は、それが当然の方法ですが、推奨されていない場合は、そこに多くの労力を費やしたくありません。

  • たとえば、単純な仮想シリアル ポート ドライバーの開発を始めるのに適したリソースは何ですか?

-アダム

4

8 に答える 8

28

ランタイムをリング 0 に安全にロードして期待どおりに動作させることができないため、C# でカーネルモード デバイス ドライバーを作成することはできません。

さらに、C# は、特にドライバーが公開する必要があるエントリ ポイントに関して、デバイス ドライバーとして読み込むのに適したバイナリを作成しません。読み込み中にバイナリに飛び込んで分析し、JIT するためのランタイムへの依存により、ドライバ サブシステムがバイナリを読み込むために必要な直接アクセスが妨げられます。

ただし、一部のデバイス ドライバーをユーザー モードに移行する作業が進行中です。UDMF (ユーザー モード ドライバー フレームワーク) チームの Peter Wieland とのインタビューをここで見ることができます。

ユーザー モード ドライバーは、管理された作業に適していますが、C# と .NET が直接サポートされるかどうかを調べるには、少しググる必要があります。私が知っているのは、カーネル レベルのドライバーは C# だけでは実行できないということだけです。

ただし、C/C++ ドライバーと C# サービス (ま​​たは同様のもの) を作成し、ドライバーにマネージ コードと通信させることはできます (C# で大量のコードを記述する必要がある場合)。

于 2008-09-16T19:32:56.583 に答える
4

これはある意味であなたを助けるでしょう:Windowsドライバーキット

于 2008-09-16T19:23:10.303 に答える
3

あなたの質問に対する直接的な回答ではありませんが、興味がある場合はSingularity projectを参照してください。

于 2008-09-16T19:18:59.877 に答える
2

プロプライエタリなフレームワークを試してみたい場合は、Jungo の WinDriver ツールキットを使用すると、USB、PCI、および PCI-E デバイス用のユーザー モード ドライバー開発 (マネージド コードであっても) をサポートします。

于 2009-11-18T03:31:12.597 に答える
2

通常よりもリング 0 に近い場所で C# プログラムを実行することの信頼性と安全性について話せる人はいますか?

C# は .NET 仮想マシンで実行されます。VM よりリング 0 に近づけることはできず、VM はユーザー空間で実行されます。

于 2008-09-16T19:38:28.893 に答える
1

マイクロソフトは、マネージコードOSを使用する、つまりWin32APIを使用して殺すという分野で多くの研究プロジェクトを行っています。

Mary Jo Foleyの記事:レガシーの再構築を参照してください

于 2008-09-16T19:24:09.303 に答える
1

.net でデバイス ドライバーを記述しても、現在のバージョンの Windows では意味がありません。

<憶測>
噂によると、MS は Singularity を次のレベルに引き上げるために多額の投資を行っているということです。ミドリを探してください。しかし、それは 2015 年以降です
</speculation>

于 2008-09-16T20:01:13.223 に答える