高速でRAMのデータを見るには?


だいき  2004-01-22 02:22:52  No: 53094

高速(100ns程度)間隔で常時、RAMのデータを見て、その値を別の変数に置き換えるには、どうすればよいでしょうか?
WinMain関数の中で、GetMessageを使ってOSの割り込みを見ていますが、その中でRAMのデータを参照して、その値を別の変数に置き換える事は、出来ますでしょうか?


岡田 之仁  2004-01-22 02:51:17  No: 53095

RAMって、それは、自分がメモリ上に取得した領域を
参照するって意味でしょうか?

それとも、物理メモリアドレスを指し示しますか?
どちらにせよ、参照は可能ですが、どこを見たいか
で、使うAPIが変わりますが・・・

※  OSのイベントで参照するなら、参照する間隔
    は、リアルタイムや、タイムチックではありま
    せんが、読むと言う動作は可能と思います。

以上。


だいき  2004-01-22 02:57:10  No: 53096

自分がメモリ上に取得した領域です。
そこに外部からDataが書き込まれる様になっています。
参照するAPIを教えて下さい。


岡田 之仁  2004-01-22 03:30:13  No: 53097

いや・・・
なんか余計解らなくなってきました。

自分が取得したメモリ領域であれば、ポインタでアクセスが可能
です。C言語ですから・・・

ですが、その領域に外部から書き込まれる???
自分が何かの通信手段でデータが送られてきたのを一旦書き込んで
(格納)してから、読み出すと言うことではない・・・

別ハードか何かあるのでしょうか?

APIに頼らなければならない状態ではないと思いますが・・・

以上。


AUT`s  2004-01-26 04:29:04  No: 53098

> GetMessageを使ってOSの割り込みを見ています
なんの割り込みでしょうね?
基本的にイベントしか取れない気がしませう。

> 自分がメモリ上に取得した領域
どうやって?

> そこに外部からDataが書き込まれる
Shared-Memory?
それともToolHelp系API?


岡田 之仁  2004-02-05 18:04:16  No: 53099

デバイスの環境や、提供されるメモリの素性がわからないので、
どのレベルのことをコメントすればよいのかわかりませんが、
解決されていれば、読み捨ててください。

ユーザーモードアプリ側で、デバイス側のメモリの取得・解放
を行う場合、デバイス側のメモリ空間は、物理メモリにマップ
されておりますので、そのマップされた空間を取得・設定する
ことになります。

AllcateUserPhysicalPage(),FreeUserPhysicalpages()
MapUserPhysicalPages(),MapUserPhysicalPagesScatter()

この辺のAPIから探してみて下さい。

DDK・SDKの方に突入しますと・・・
MapMemと言うサンプルが添付されていますが、その中で、
mapSystemLogicalmemory(),ObReferenceOjectByHandle()
ZwMapViewOfSection(),HalTranslateBusAddress()

この辺のAPIを使います。

※  提供されるRANが、搭載メモリ上のものであれば、
    当然、前者のAPIでOKなはずです。
    何か他のデバイスで提供されるものであれば、通常
    それを使う為のドライバが提供されているはずです
    ので、後者を行う必要はありません。
    自作の場合は、自分でデバドラを作成する必要があ
    ると思います。

●  自分でメモリを取得するには・・・
    GlobalAlloc(),VirtualAlloc()
    とかのAPIをご参照下さい。
    C言語であれば、ライブラリにもメモリ取得のAPI
    がありますので、特にわざわざWin32 APIを呼ぶ必要
    は無いと思いますが・・・

適切な方法を選択されて実現するしかないです。

以上。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加