当前位置: 首页 > news >正文

网站开发代理合同郫县网站建设

网站开发代理合同,郫县网站建设,wordpress站做app,建设网站收费参考 #xff1a;http://user.qzone.qq.com/382164370/infocenter#!app2viaQZ.HashRefreshpos1363445766 内存映射文件可以用于3个不同的目的 • 系统使用内存映射文件#xff0c;以便加载和执行. exe和DLL文件。这可以大大节省页文件空间和应用程序启动运行所需…参考 http://user.qzone.qq.com/382164370/infocenter#!app2viaQZ.HashRefreshpos1363445766 内存映射文件可以用于3个不同的目的 • 系统使用内存映射文件以便加载和执行. exe和DLL文件。这可以大大节省页文件空间和应用程序启动运行所需的时间。 • 可以使用内存映射文件来访问磁盘上的数据文件。这使你可以不必对文件执行I/O操作并且可以不必对文件内容进行缓存。 • 可以使用内存映射文件使同一台计算机上运行的多个进程能够相互之间共享数据。Windows确实提供了其他一些方法以便在进程之间进行数据通信但是这些方法都是使用内存映射文件来实现的这使得内存映射文件成为单个计算机上的多个进程互相进行通信的最有效的方法。 使用内存映射数据文件  若要使用内存映射文件必须执行下列操作步骤 1) 创建或打开一个文件内核对象该对象用于标识磁盘上你想用作内存映射文件的文件。 2) 创建一个文件映射内核对象告诉系统该文件的大小和你打算如何访问该文件。 3) 让系统将文件映射对象的全部或一部分映射到你的进程地址空间中。 当完成对内存映射文件的使用时必须执行下面这些步骤将它清除 1) 告诉系统从你的进程的地址空间中撤消文件映射内核对象的映像。 2) 关闭文件映射内核对象。 3) 关闭文件内核对象。 文件操作是应用程序最为基本的功能之一Win32 API和MFC均提供有支持文件处理的函数和类常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说以上这些函数可以满足大多数场合的要求但是对于某些特殊应用领域所需要的动辄几十GB、几百GB、乃至几TB的海量存储再以通常的文件处理方法进行处理显然是行不通的。所以可以使用内存文件映射来处理数据网上也有铺天盖地的文章但是映射大文件的时候又往往会出错需要进行文件分块内存映射这里就是这样的一个例子教你如何把文件分块映射到内存。 // // 该函数用于读取从CCD摄像头采集来的RAW视频数据当中的某一帧图像, // RAW视频前596字节为头部信息可以从其中读出视频总的帧数 // 帧格式为1024*576*8 /* 参数pszPath文件名dwFrame: 要读取第几帧默认读取第2帧 */ BOOL MyFreeImage::LoadXRFrames(TCHAR *pszPath, DWORD dwFrame/* 2*/ ) {// get the frames of X-Ray framesBOOL bLoop TRUE;int i;int width 1024;int height 576;int bitcount 8; //1, 4, 8, 24, 32////Build bitmap headerBITMAPFILEHEADER bitmapFileHeader; BITMAPINFOHEADER bitmapInfoHeader; BYTE rgbquad[4]; // RGBQUADint index 0;DWORD widthbytes ((bitcount*width 31)/32)*4; //每行都是4的倍数 DWORD的倍数 这里是 576-TRACE1(widthbytes%d\n, widthbytes);switch(bitcount) { case 1: index 2; bitmapFileHeader.bfOffBits (DWORD)(sizeof(BITMAPFILEHEADER) sizeof(BITMAPINFOHEADER) 2*4); break; case 4: index 16; bitmapFileHeader.bfOffBits (DWORD)(sizeof(BITMAPFILEHEADER) sizeof(BITMAPINFOHEADER) 16*4); break; case 8: index 256; bitmapFileHeader.bfOffBits (DWORD)(sizeof(BITMAPFILEHEADER) sizeof(BITMAPINFOHEADER) 256*sizeof(RGBQUAD)); break; case 24: case 32: index 0; bitmapFileHeader.bfOffBits (DWORD)(sizeof(BITMAPFILEHEADER) sizeof(BITMAPINFOHEADER)); break; default:break;} //构造Bitmap文件头BITMAPFILEHEADER bitmapFileHeader.bfType 0x4d42; // 很重要的标志位 BM 标识bitmapFileHeader.bfSize (DWORD)(bitmapFileHeader.bfOffBits height * widthbytes); //bmp文件长度 bitmapFileHeader.bfReserved1 0; bitmapFileHeader.bfReserved2 0; //构造Bitmap文件信息头BITMAPINFOHEADER bitmapInfoHeader.biSize sizeof(BITMAPINFOHEADER); bitmapInfoHeader.biWidth width; bitmapInfoHeader.biHeight height; bitmapInfoHeader.biPlanes 1; bitmapInfoHeader.biBitCount bitcount;bitmapInfoHeader.biCompression BI_RGB; // 未压缩bitmapInfoHeader.biSizeImage height * widthbytes; bitmapInfoHeader.biXPelsPerMeter 3780; bitmapInfoHeader.biYPelsPerMeter 3780; bitmapInfoHeader.biClrUsed 0; bitmapInfoHeader.biClrImportant 0; //创建BMP内存映像,写入位图头部BYTE *pMyBmp new BYTE[bitmapFileHeader.bfSize]; // 我的位图pMyBmpBYTE *curr pMyBmp; // curr指针指示pMyBmp的位置memset(curr, 0, bitmapFileHeader.bfSize); //写入头信息 memcpy(curr, bitmapFileHeader,sizeof(BITMAPFILEHEADER));curr pMyBmp sizeof(BITMAPFILEHEADER); memcpy(curr, bitmapInfoHeader,sizeof(BITMAPINFOHEADER)); curr sizeof(BITMAPINFOHEADER);//构造调色板 , 当像素大于8位时就没有调色板了。if(bitcount 8) {rgbquad[3] 0; //rgbReservedfor(i 0; i index; i) { rgbquad[0] rgbquad[1] rgbquad[2] i; memcpy(curr, rgbquad, sizeof(RGBQUAD)); curr sizeof(RGBQUAD); } }else if(bitcount 1) { rgbquad[3] 0; //rgbReservedfor(i 0; i index; i) { rgbquad[0] rgbquad[1] rgbquad[2] (256 - i)%256; memcpy(curr, rgbquad, sizeof(RGBQUAD)); curr sizeof(RGBQUAD); } } //// 文件映射,从文件中查找图像的数据//Open the real file on the file systemHANDLE hFile CreateFile(pszPath, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);if (hFile INVALID_HANDLE_VALUE){DWORD dwError GetLastError();ATLTRACE(_T(MapFile, Failed in call to CreateFile, Error:%d\n), dwError);SetLastError(dwError);bLoop FALSE;return FALSE;}//Create the file mapping objectHANDLE hMapping CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);if (hMapping NULL){DWORD dwError GetLastError();ATLTRACE(_T(MapFile, Failed in call to CreateFileMapping, Error:%d\n), dwError);// Close handleif (hFile ! INVALID_HANDLE_VALUE){CloseHandle(hFile);hFile INVALID_HANDLE_VALUE;}SetLastError(dwError);bLoop FALSE;return FALSE;}// Retrieve allocation granularitySYSTEM_INFO sinf;GetSystemInfo(sinf);DWORD dwAllocationGranularity sinf.dwAllocationGranularity;// Retrieve file size// Retrieve file sizeDWORD dwFileSizeHigh;__int64 qwFileSize GetFileSize(hFile, dwFileSizeHigh);qwFileSize | (((__int64)dwFileSizeHigh) 32);CloseHandle(hFile);// Read Image__int64 qwFileOffset 0; // 偏移地址DWORD dwBytesInBlock 0, // 映射的块大小dwStandardBlock 100* dwAllocationGranularity ; // 标准块大小DWORD dwFrameSize height*width; // 计算一帧图像的数据量不包括头部信息DWORD dwCurrentFrame 1;dwBytesInBlock dwStandardBlock;if (qwFileSize dwStandardBlock)dwBytesInBlock (DWORD)qwFileSize;//Map the view LPVOID lpData MapViewOfFile(hMapping, FILE_MAP_ALL_ACCESS, static_castDWORD((qwFileOffset 0xFFFFFFFF00000000) 32), static_castDWORD(qwFileOffset 0xFFFFFFFF), dwBytesInBlock);if (lpData NULL){DWORD dwError GetLastError();ATLTRACE(_T(MapFile, Failed in call to MapViewOfFile, Error:%d\n), dwError);// Close Handleif (hMapping ! NULL){CloseHandle(hMapping);hMapping NULL;}SetLastError(dwError);bLoop FALSE;return FALSE;}BYTE *lpBits (BYTE *)lpData;BYTE *curr1, *curr2, *lpEnd;curr1 lpBits; // seek to startcurr2 lpBits 596; // seek to first framelpEnd lpBits dwBytesInBlock; // seek to end// Read video infomationKMemDataStream streamData( curr1, dwBytesInBlock);ReadXRHeader(streamData);while(bLoop){DWORD dwTmp lpEnd - curr2; //内存缓冲剩余的字节if ( dwTmp dwFrameSize ) {if(dwCurrentFrame dwFrame){memcpy(curr, curr2, dwFrameSize);bLoop FALSE;}curr2 dwFrameSize;}else //内存中不够一帧数据{DWORD dwTmp2 dwFrameSize - dwTmp; // 一副完整的帧还需要dwTmp2字节if (dwCurrentFrame dwFrame){memcpy(curr, curr2, dwTmp);curr dwTmp;}//1、首先计算文件的偏移位置 qwFileOffset dwBytesInBlock;//2、 检查还可以映射多少字节的东东到内存里面if ( qwFileSize - qwFileOffset dwStandardBlock)dwBytesInBlock (DWORD)(qwFileSize - qwFileOffset);//3、重新映射文件UnmapViewOfFile(lpData);lpData MapViewOfFile(hMapping, FILE_MAP_ALL_ACCESS, static_castDWORD((qwFileOffset 0xFFFFFFFF00000000) 32), static_castDWORD(qwFileOffset 0xFFFFFFFF), dwBytesInBlock);if (lpData NULL) // 一定要检查不然可能内存映射失败{DWORD dwError GetLastError();ATLTRACE(_T(MapFile, Failed in call to MapViewOfFile, Error:%d\n), dwError);SetLastError(dwError);bLoop FALSE;break;}curr2 lpBits (BYTE *)lpData;lpEnd lpBits dwBytesInBlock; // seek to endif (dwCurrentFrame dwFrame){memcpy(curr, curr2, dwTmp2);bLoop FALSE;}curr2 dwTmp2;}dwCurrentFrame;if (dwCurrentFrame ((LPKINFO)m_VideoInfoHeader)-frames ) // 到达文件末尾{bLoop FALSE;}}//将内存流 pMyBmp 转为bitmapKMemDataStream stream(pMyBmp, bitmapFileHeader.bfSize, true);if(!LoadFromMemory(FIF_BMP, stream))return FALSE;//if (lpData ! NULL){//FlushViewOfFile(lpData, 0);UnmapViewOfFile(lpData);lpData NULL;}//remove the file mappingif (hMapping ! NULL){CloseHandle(hMapping);hMapping NULL;}return TRUE;}
http://www.yutouwan.com/news/261606/

相关文章:

  • 甘肃手机版建站系统哪个好销售人员培训课程有哪些
  • 张家口市网站建设针对茅台酒企业网站建设方案
  • 现如今网站开发用什么框架天津河东做网站公司
  • asp网站500错误iis7开发一个app价格
  • 专业建设专题网站大连市建设市场综合管理平台
  • 做响应式网站设计gateface做网站
  • 网站建设捌金手指下拉七网站免费源码不用下载
  • 江西建设银行招聘网站seo网络优化是什么工作
  • 做百度网站电话号码在线服装设计网站
  • 网站建设新闻发布手机客户端app下载安装
  • 网站建设上市公司苏州园区网站设计公司
  • 广州做网站公司企业网站 源代码
  • 网站建设中跳转页面源码海南百度首页广告
  • 冒用公司名做网站永久免费自助建站
  • 怎样免费建公司网站应用大全网站
  • 设计公司网站需要什么条件自动写作网站
  • 呼市网站seo优化工资提成怎么算四川网站建设套餐
  • 网站安全加固wordpress自建菜单
  • 做网站建站点用了采集站域名做网站
  • 网站验证图标滴滴出行的网站是哪家公司做的
  • 汕头网站定制广州百度竞价外包
  • 国土资源集约化网站群建设通知淄博网站建设团队
  • 英山建设银行网站怎样建设一个好的企业网站
  • 湛江网站搜索引擎推广做网站 深圳
  • 做网站需要解析吗物流公司网站设计
  • 源码网站模板微信开店哪个平台好
  • 高端个性化网站开发免费域名申请网站空间
  • 做网站设计怎么样手机建设网站自适应的好处
  • 可以做装修效果图的网站在线网页制作
  • 电子商务网站建设 实验分析网站制作报价多少