gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 11:14:15 26 4
gpt4 key购买 nike

我正在尝试找到一种方法来为不同进程之间共享的内存映射文件动态分配内存。我的设计如下:在 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. 除了内存映射文件还有其他选择吗?我选择内存映射文件的原因是当其他进程修改显示时,它不需要发送所有更新细节,可以简单地设置一个互斥锁让显示线程知道它需要刷新屏幕。通过这种方式,我可以获得每秒 50 帧的刷新率,显示来自 5 个不同的应用程序。

提前致谢

最佳答案

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

关于c++ - 在 Windows Mobile 中动态分配内存映射文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7386511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com