2011-08-01 9 views
4

私はデバイス(キャッシュドロワ)を持っており、デバイスと直接通信したいと思います。私はそれがアドレスf1にあることを知っている。また、openbitは01です。I/Oアドレスへのデータの書き込み

私は今まで理解していたように、メモリアドレスf1に1を送信し、キャッシュドロワを開く必要があります。 asmを使用していますが、私はアクセス違反を取得します。次に、私はあなたがデバイスi/oアドレス(勝利を使用する必要がある)に直接通信することはできません。そのアドレスにデータを送信する正しい方法は何でしょうか。 私はアプリケーション内のドライバと通信できないので、私はドライバを使用できないことに注意してください。 システムはwin7です。

ありがとうございます!

+1

私の知る限り、ユーザースペースアプリがデバイスと通信する唯一の方法は、ドライバを使用することです。 –

+0

私はそれが実際には "メモリアドレスF1"にあるのではなく、代わりにI/OポートF1にあると思います。違いは、INおよびOUT命令がI/Oポートアクセスに使用され、MOVなどではないことです。ドライバおよびサポートされているDelphiの例は、こちらから入手できます。(http://www.grahamwideman.com/gw/tech/Delphi/iopm/ index.htm) – Brian

答えて

0

アプリケーションからドライバと通信できないのはなぜですか?これは、リング3アプリケーションがハードウェアと安全にやり取りするための最良の方法です。

しかし、実際にドライバを使用することを主張する場合は、0番に電話して直接アクセスしてみてください。以前のWindows版(XP以前)よりもはるかに難しいですが、可能です。私はWindows 7を持っていないので、自分でやったことはありませんが、どこでもASMプログラミングフォーラムで尋ねることができます。

+1

申し訳ありませんが、ユーザーモードからリング0に入ることはできません。カーネルだけがそれを行うことができます。 –

+0

もしあなたがasmで十分なら、そうすることができます。私の友人はそれを本当によくしており、彼はそれを実行する能力があります。少なくとも彼はWindows XPで私を示しています。 – LeleDumbo

1

をサポートしている場合、私は知りません上記の優れた提案は、this delphi code for writing and reading I/Oをチェックしてください。私たちはGWIOPMを使ってあなたが求めていることをやっていますが、W7などのWindowsの32ビット版では大丈夫です(ほとんどの「無料」ドライバの場合と同じです)。 64ビットWindowsの場合、署名されたカーネルドライバが必要です。このために、現時点で入手可能なものはほとんどありません。私たちは私たち自身で書く必要がありました。

関連する問題