对于我正在编写的软件,我需要知道 Linux 帧缓冲区何时更新。 我需要诸如 Windows 镜像驱动程序之类的东西(有关更多信息,请参阅维基百科上的 Mirror_driver)。
环顾四周,我没有找到任何东西,所以我正在寻找一种方法来实现这一目标。
据我所知,我需要编写一个模块,该模块在帧缓冲区特定模块之后加载,并 Hook fb ops 结构以注入(inject)自己的内容并捕获更新。
有人可以给我提示吗?我对内核模块编写没有太多经验。
谢谢!
最佳答案
一般的内核模块编写技巧,你可以阅读书籍:Linux Kernel Development , Linux Kernel in a Nutshell和 Linux Device Drivers .
了解如何构建和安装自己的内核模块的基础知识后,您可以阅读内核的源代码以找出帧缓冲区内容的位置(从 Documentation/fb/framebuffer.txt 开始)。我不确定你是否可以像这样连接帧缓冲区驱动程序,如果不能,你可能需要自己添加钩子(Hook)支持或“劫持”主驱动程序的事件来模拟钩子(Hook)。例如,假设有一个函数,只要有更新就会被调用。您找到声明该函数的指针的位置,保存该值,然后使用指向您的函数的指针对其进行修改。在函数内部,您调用原始函数,然后调用您自己的代码来操作您想要的内容并正确返回。
我对帧缓冲区的东西了解不多,所以我只是猜测你的选择是什么。可能有一个特定于 linux-fb 主题的讨论列表。 This might me a good start .
关于c - 适用于 Linux 帧缓冲区的 Windows 镜像驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4810510/