在Windows Mobile中动态分配内存映射文件大小



我正试图找到一种方法来动态分配内存的内存映射文件在不同的进程之间共享。我的设计如下:在Windows mobile中,我正在编写一个显示线程,该线程使用共享内存处理来自不同进程的显示部分。计划是创建一个等于屏幕大小的内存映射文件,例如:如果屏幕大小是640 X 480,那么我创建一个640 X 480 X 4的BYTE数组,然后与另一个进程共享这个数组,以便其他进程更新内存中的hDC显示,然后向显示线程发送更新以更新设备上的显示。这很好,但有一个限制是在编译时分配内存,因为我们不能动态分配内存

(http://msdn.microsoft.com/en-us/library/aa366542%28v=vs.85%29.aspx)。当你不想改变文件的大小时(例如,当映射只读文件时),调用CreateFileMapping并为dwMaximumSizeHigh和dwMaximumSizeLow指定零。这样做会创建一个与文件大小完全相同的文件映射对象。否则,您必须计算或估计完成文件的大小,因为文件映射对象的大小是静态的;一旦创建,它们的大小就不能增加或减少。

  1. 是否有一种方法来分配内存映射文件的大小后获得设备屏幕坐标?一件事是为了迎合不同屏幕大小的设备,如平板电脑,移动设备等,另一件事是,如果一个应用程序想要只显示屏幕的一部分,那么我们应该能够创建内存映射只有那个大小。
  2. 是否有其他替代内存映射文件?我选择内存映射文件的原因是,当其他进程修改显示时,它不需要发送所有更新细节,可以简单地设置一个互斥锁,让display线程知道它需要刷新屏幕。通过这种方式,我可以从5个不同的应用程序中获得每秒50帧的刷新率。

Thanks in advance

不要使用文件,将这些数据写入磁盘没有任何价值。将INVALID_HANDLE_VALUE传递给CreateFileMapping,以便内存由分页文件支持,并且您可以设置所需的任何大小。

最新更新