12

WindowsドライバーはPythonで記述できますか?

4

7 に答える 7

18

はい。"クラシック" カーネル モード ドライバーを作成することはできません。ただし、XP 以降、Windows はUser-Mode Driver Framework を提供します。明らかに、すべてを行うことはできません-OSの起動に使用されるドライバーは、明らかにカーネルモードでなければなりません。ただし、UMDF を使用すると、COM コンポーネントを実装するだけで済みます。

ブート時ドライバーに加えて、次のような UMDF ドライバーを作成することもできません。

  • 割り込みを処理する
  • ダイレクト メモリ アクセス (DMA) などのハードウェアに直接アクセスする
  • 厳密なタイミング ループがある
  • カーネル モード用に予約されている非ページ プールまたはその他のリソースを使用する
于 2009-06-11T14:32:37.883 に答える
3

これが事実上不可能である理由を理解する良い方法は、ドライバーでの C++ の使用に関するMicrosoft のアドバイスを読むことです。C の派生物として、C++ の使用は簡単に見えます。実際には、そうではありません。

たとえば、すべての関数 (および実際にはすべてのアセンブリ命令) について、それがページング可能なメモリにあるか、ページングできないメモリにあるかを決定する必要があります。これには、C への拡張、新しい C++ 機能の慎重な使用、またはこの場合は Python 言語と VM への特別な拡張が必要です。さらに、ドライバー互換の VM もさまざまな IRQL を処理する必要があります。できることとできないことを制限する「レベル」の階層があります。

于 2009-06-11T14:26:22.190 に答える
3

決定的な答えは、それ以外の場合は C/アセンブリ ドライバーにインタープリターを埋め込まないことではありません。誰かが利用可能なフレームワークを持っていない限り、答えはノーです。インタープリターとバインディングを配置したら、残りのロジックを Python で実行できます。

ただし、ドライバの作成は、C が最も適しているものの 1 つです。結果として得られる Python コードは、C コードに非常によく似ており、インタープリターのオーバーヘッドの目的を無効にしていると思います。

于 2009-06-11T14:08:06.977 に答える
1

Pythonは仮想マシンで実行されるため、違います。

しかし:

Pythonコードを機械語に変換するコンパイラを書くことができます。あなたがそれをしたら、あなたはそれをすることができます。

于 2009-06-11T13:53:12.923 に答える
1

Windows 上のドライバーの制限 (メモリ割り当てスキーム、ライブラリの動的ロードなど) はわかりませんが、ドライバーに Python インタープリターを埋め込むことができるかもしれません。私はそれが良い考えだとは思いません:)

于 2009-06-11T14:01:27.397 に答える
0

決して言わないでくださいええ..いいえ

何かを一緒にハックして、Pythonでドライバーのユーザーモード部分を実行できる可能性があります。しかし、カーネルモードのものはCまたはアセンブリでのみ実行できます。

于 2009-06-11T13:54:52.747 に答える
0

いいえ、できません。Windows ドライバーは、次のことができる言語で作成する必要があります。

  1. C ベースの API とのインターフェース
  2. マシンコードにコンパイルする

繰り返しになりますが、Python を機械語コードに変換するコンパイラーを作成することを妨げるものは何もありません ;)

于 2009-06-11T13:59:38.650 に答える