码迷,mamicode.com
首页 > 其他好文 > 详细

GlobalLock

时间:2014-08-30 20:25:59      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:style   os   使用   文件   sp   amp   on   new   size   

HGLOBAL hImageMemory=GlobalAlloc(GMEM_MOVEABLE, dwFileSize); //给图片分配全局内存    

void *pImageMemory=GlobalLock(hImageMemory); //锁定内存    

//锁定内存的同时,获得句柄hImageMemory指向的内存的实际地址赋给pImageMemory,接着便可以通过*pImageMemory对实际地址进行操作。

DWORD dwReadedSize; //保存实际读取的文件大小    

ReadFile(hFile, pImageMemory, dwFileSize, &dwReadedSize, NULL); //读取图片到全局内存当中    

GlobalUnlock(hImageMemory); //解锁内存    

CloseHandle(hFile); //关闭文件句柄    

IStream *pIStream;//创建一个IStream接口指针,用来保存图片流 

 

 

 

 

GlobalAlloc申请的内存分两种,一种是GMEM_FIXED,另一种是GMEM_MOVEABLE。两者的差别只要在于GMEM_MOVEABLE类型的内存操作系统是可以移动的,比如堆中有好几块小内存,当再申请一大块内存时,操作系统会移动GMEM_MOVEABLE类型的内存来合并出一大块。正因为GMEM_MOVEABLE是可移动的,所以要用句柄标识,不能用内存地址标识,在使用时通过GlobalLock由句柄得到内存地址。

对于GMEM_FIXED类型的,该函数返回的句柄就是内存指针,可以直接当内存指针使用。

GlobalLock

标签:style   os   使用   文件   sp   amp   on   new   size   

原文地址:http://www.cnblogs.com/notlate/p/3946790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!