1

inb()、outb()、inl() などの低レベル i/o 関数を使用してマザーボードから温度、電圧、およびファン速度を収集することにより、ハードウェアを監視する Linux コードがいくつかあります。

私の課題は、そのコードを単純なコンソール アプリとして Windows で実行できるように移植することです。しかし、Win32 (または .NET) が提供する、ダイレクト メモリ マップ ポートへのアクセスを許可する機能に困惑しています。

システムドライバーもコーディングしたくありません。

私の Windows ツールの好みは VS2008 です。(ご参考までに)

これは可能ですか?

4

3 に答える 3

2

Windows の I/O ポートの既定の保護レベルでは、ユーザー モード プログラムがどのポートでも inp および out 命令を使用できなくなります。プログラムは GPF で停止します。リング3コードがポートにアクセスできるように、その保護レベルを変更する自由に利用できるドライバーがいくつかあります。キラーポークに興味があるなら、どちらでも構いません。

標準的なものはinput32です。

于 2010-04-09T13:30:02.333 に答える
0

さて、いくつかの試行錯誤で多くの検索を行った後、私が役立つと思った2つの最も有用なビットは次のとおりです。

WinRing0およびIO.DLL

それらはほとんど同じことをします、違いはあなたがそれらを使い始めるのを助けるためにあなたが見つけるコードのサンプルです。

これが他の人に役立つことを願っています。

于 2010-04-15T13:02:40.970 に答える
0

ほとんどのハードウェアの場所は、ユーザー空間からアクセスできない領域にマップされているため、目的の API を提供するデバイス ドライバーが必要になります。

UNIX アプリケーション移行ガイドと MSDNも確認できます。

于 2010-04-09T13:24:45.020 に答える