这需要花费一些时间来组合所有内容,但我认为编码起来不会太难。这对我来说只是一个新的编程领域,因为我从未从高级语言(至少比C更高级)的低级别工作过。我只是想知道处理这个问题的方法。我可以只使用一堆Win32API调用,但这意味着必须处理一堆与系统相关的字符串和数组打包和解包,我希望最终使其跨平台工作,因为我正在读取的进程是由具有多个平台构建的可执行文件生成的(我知道内存地址在不同的系统上会发生变化。想法是有一个扁平的文件,其中包含所有内存映射,以便Ruby程序可以将当前平台环境与匹配的内存映射进行匹配。)但从事情的外观来看,我只能制作一个类,包装任何当前平台的系统共享库内存相关的函数调用。
我不知道是否已经存在一个Ruby gem可以为我处理所有这些问题,我可能只是没有找到。我还可以尝试编辑每个构建的可执行文件,使得无论何时我想要读取的内存值被进程写入时,它也会将新值的副本写入共享内存中的空间,我以某种方式让Ruby创建一个指向该共享内存地址的指针类的实例,并向Ruby程序发出信号,表示该值已更新并应重新加载。基本上,基于中断的系统很好,但由于读取这些值的目的只是将其发送到从中央服务器广播的记分板,因此我可以坚持基于轮询的系统,在固定时间间隔内发送更新。我也可以完全放弃Ruby,转而使用C或C++,但我不太了解它们。实际上,我比C++更了解x86,我只知道与系统无关的ANSI C,并且从未处理过共享系统库。
是否有可用的宝石或较少人知道的模块已经完成了这个?如果没有,那么任何关于如何完成此操作的其他信息都将是不错的。我想,简而言之,我该怎么做呢?
提前感谢, Grg
PS:确认那些Win32API调用应该针对kernel32.dll库会很好。