磁盘上的CreateDibSection而不是物理内存

我正在使用一种算法来解决内存问题,该算法用于“拼合”PDF文档中的页面。
HBITMAP hbmp = CreateDibSection(...);
ThirdPartyBmpManipulation(hbmp, "C:\file.pdf", 0); //renders page 0 in file.pdf
void * hdib = ConvertBitmap(hbmp); //copy a Dib Section to a Dib
DeleteObject(hbmp); //frees the HBitmap while the Dib is now in memory
问题是我有一个非常大的位图,在某些情况下,当我分配要复制的DIB时,我无法将HBitmap保留在内存中。 所以这是一个很长的镜头,但我可以以某种方式在磁盘上分配Dib部分并且仍然有一个HBITMAP吗? (对我的ConvertBitmap函数使用相同的句柄)     
已邀请:
什么是失败模式?你说“物理内存”:windows使用虚拟内存,它会分页到磁盘,你不必担心物理内存耗尽超出性能命中。如果您的地址空间不足,使用该磁盘可能无法帮助您。 但是,
CreateDIBSection
可以将
HANDLE
带到文件映射(使用
CreateFileMapping
创建)。如果函数内部和相关的HBITMAP函数足够智能,则可以通过利用该功能来避免耗尽地址空间。如果它们“聪明”,它们将使用
MapViewOfFile
将文件的相对较小的“窗口”根据需要映射到进程的地址空间。     

要回复问题请先登录注册