5

.NET フレームワークが USB ドライバーを操作するためのマネージ メソッドを提供しないのはなぜでしょうか。私が読んだすべてのことから、Windows API を呼び出す必要があり、マーシャリングと PInvoke を使用する必要があります。.NET がシリアル ポートと通信する方法を提供するのに、USB ポートを提供しないのはなぜですか? USB は現在、シリアル ポートよりもはるかに広く使用されるようになっています。USB をフレームワークに組み込むときではないでしょうか?

4

3 に答える 3

10

.Net フレームワークの他のすべての機能と同様に、それはコストと報酬に帰着します。.Net がリリースされるたびに、所有者は機能をカットするという非常に骨の折れる決定を下さなければなりません。リクエストが多すぎる/それらすべてを満足させたい. 選ばれるものは、妥当なコストで明確な価値を提供する必要があります。

私の推測では、シリアル ポートはおそらく USB ほど普及していませんが、マネージ コードに実装するのは単純に簡単です。したがって、使用率はそれほど高くないかもしれませんが、それらを実装するのが比較的簡単であるため、それらを上に置きます.

于 2010-02-06T17:57:35.853 に答える
3

USBは単なるバスです。デバイスと通信する方法は、バスの反対側にあるチップによって異なります。すべてのデバイスと対話するための標準化された方法はありません。

USB デバイス プロバイダーがデバイスを標準的な方法で公開したい場合 (ほとんどのプロバイダーは、開発、文書化、および API に関するクライアントへの教育のコストを節約するために標準に準拠しています)、ドライバー プログラマーは、デバイスを利用できるようにするドライバーを作成できます。さまざまな Windows API (大容量ストレージ、WIA、DirectShow、仮想シリアル ポート、Bluetooth、ヒューマン インターフェイス デバイスなど)。繰り返しになりますが、標準化されたドライバーは既に Windows API に公開されているため、.Net がハードウェアと直接対話する必要はありません。

于 2010-02-06T18:17:56.017 に答える
0

HID 互換の USB デバイスとのインターフェイスを検討している場合は、CC.USBHIDを参照してください。古くて厄介ですが、正しい方向に進む可能性があります。利用可能なより成熟したプロジェクトがあるかもしれません。

于 2010-02-06T18:13:39.437 に答える