高速(100ns程度)間隔で常時、RAMのデータを見て、その値を別の変数に置き換えるには、どうすればよいでしょうか?
WinMain関数の中で、GetMessageを使ってOSの割り込みを見ていますが、その中でRAMのデータを参照して、その値を別の変数に置き換える事は、出来ますでしょうか?
RAMって、それは、自分がメモリ上に取得した領域を
参照するって意味でしょうか?
それとも、物理メモリアドレスを指し示しますか?
どちらにせよ、参照は可能ですが、どこを見たいか
で、使うAPIが変わりますが・・・
※ OSのイベントで参照するなら、参照する間隔
は、リアルタイムや、タイムチックではありま
せんが、読むと言う動作は可能と思います。
以上。
自分がメモリ上に取得した領域です。
そこに外部からDataが書き込まれる様になっています。
参照するAPIを教えて下さい。
いや・・・
なんか余計解らなくなってきました。
自分が取得したメモリ領域であれば、ポインタでアクセスが可能
です。C言語ですから・・・
ですが、その領域に外部から書き込まれる???
自分が何かの通信手段でデータが送られてきたのを一旦書き込んで
(格納)してから、読み出すと言うことではない・・・
別ハードか何かあるのでしょうか?
APIに頼らなければならない状態ではないと思いますが・・・
以上。
> GetMessageを使ってOSの割り込みを見ています
なんの割り込みでしょうね?
基本的にイベントしか取れない気がしませう。
> 自分がメモリ上に取得した領域
どうやって?
> そこに外部からDataが書き込まれる
Shared-Memory?
それともToolHelp系API?
デバイスの環境や、提供されるメモリの素性がわからないので、
どのレベルのことをコメントすればよいのかわかりませんが、
解決されていれば、読み捨ててください。
ユーザーモードアプリ側で、デバイス側のメモリの取得・解放
を行う場合、デバイス側のメモリ空間は、物理メモリにマップ
されておりますので、そのマップされた空間を取得・設定する
ことになります。
AllcateUserPhysicalPage(),FreeUserPhysicalpages()
MapUserPhysicalPages(),MapUserPhysicalPagesScatter()
この辺のAPIから探してみて下さい。
DDK・SDKの方に突入しますと・・・
MapMemと言うサンプルが添付されていますが、その中で、
mapSystemLogicalmemory(),ObReferenceOjectByHandle()
ZwMapViewOfSection(),HalTranslateBusAddress()
この辺のAPIを使います。
※ 提供されるRANが、搭載メモリ上のものであれば、
当然、前者のAPIでOKなはずです。
何か他のデバイスで提供されるものであれば、通常
それを使う為のドライバが提供されているはずです
ので、後者を行う必要はありません。
自作の場合は、自分でデバドラを作成する必要があ
ると思います。
● 自分でメモリを取得するには・・・
GlobalAlloc(),VirtualAlloc()
とかのAPIをご参照下さい。
C言語であれば、ライブラリにもメモリ取得のAPI
がありますので、特にわざわざWin32 APIを呼ぶ必要
は無いと思いますが・・・
適切な方法を選択されて実現するしかないです。
以上。
ツイート | ![]() |