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

手表查询网站dedecms 网站导航

手表查询网站,dedecms 网站导航,免费做微信小程序,中国北京门户网站建设调查报告在实际开发过程中#xff0c;经常希望能在应用程序中直接读写设备的物理空间。以前在做WinCE6.0下的MEMMgr时通过秘密加载一个内核态驱动实现了这个需求。但这种方式有一个明显的缺陷#xff0c;每次读写都必须经由它才能完成。如果只是读取GPIO#xff0c;那问题不算大。如… 在实际开发过程中经常希望能在应用程序中直接读写设备的物理空间。以前在做WinCE6.0下的MEMMgr时通过秘密加载一个内核态驱动实现了这个需求。但这种方式有一个明显的缺陷每次读写都必须经由它才能完成。如果只是读取GPIO那问题不算大。如果想通过这种方式实现视频播放的加速就比较困难了。估计非但不能加速反而会变得更慢。 早先曾与ZL仔细的讨论过这个问题他当时在WinCE6.0上移植TCPMP发现播放视频不太流畅于是想通过直接写显存进行加速。目的很明确在应用中申请一段虚拟空间通过某种方法将其映射到显存上视频解码过程中直接往映射过的虚拟空间上写。这种方法与使用GAPI有一点类似。 实现这个需求需要用到函数VirtualCopyEx()。看看帮助中关于它的说明This function dynamically maps a virtual address to a physical address by creating a new page-table entry.This function is callable in kernel mode and in user mode, when the source and destination process handles are the active process.This function is similar to VirtualCopy, except VirtualCopyEx requires handles to the source and destination process. 据此基本可以确定我们的确可以在应用中申请一段虚拟空间然后通过这个函数将其映射到某段物理空间上。其中目标进程是我们的应用而源进程是NK.exe。为了实现在NK.exe中执行VirtualCopyEx()可以加载一个内核态的驱动。更为方便的方法是移植一个OALIOCTL并在IOControl()中添加一个case。这样应用程序在做内存映射时就无需打开某个流驱动直接调用KernelIoControl()即可。 OALIOCTL中添加的关键代码如下。  1 typedef struct {  2     void*    pvDestMem;  3     DWORD    dwPhysAddr;  4     DWORD    dwSize;  5 } VIRTUAL_COPY_EX_DATA;  6   7 #define IOCTL_VIRTUAL_COPY_EX CTL_CODE (FILE_DEVICE_UNKNOWN,3333,METHOD_BUFFERED,FILE_ANY_ACCESS)  8   9  10 case IOCTL_VIRTUAL_COPY_EX: 11 { 12     VIRTUAL_COPY_EX_DATA *p  (VIRTUAL_COPY_EX_DATA*)pInBuf; 13     HANDLE hDst  (HANDLE)GetDirectCallerProcessId(); 14     HANDLE hSrc  (HANDLE)GetCurrentProcessId(); 15     fRet  VirtualCopyEx(hDst,p-pvDestMem,hSrc,(LPVOID)p-dwPhysAddr,p-dwSize, 16      PAGE_READWRITE|PAGE_PHYSICAL|PAGE_NOCACHE); 17 }break; 应用程序中进行内存映射的关键代码如下。 1 volatile LPVOID GetVirtual(DWORD dwPhyBaseAddress, DWORD dwSize)  2 {  3     volatile LPVOID pVirtual;  4     VIRTUAL_COPY_EX_DATA vced;  5       6     if(dwPhyBaseAddress0xFFF)  7     {  8         return NULL;  9     } 10     vced.dwPhysAddr  dwPhyBaseAddress8; 11     pVirtual  VirtualAlloc(0,dwSize,MEM_RESERVE,PAGE_NOACCESS); 12     vced.pvDestMem  pVirtual; 13     vced.dwSize  dwSize; 14     KernelIoControl(IOCTL_VIRTUAL_COPY_EX,vced, sizeof(vced), NULL, NULL, NULL); 15     return pVirtual; 16 } 17  18 // WinCE6.0模拟器中应用程序直接写屏 19 PBYTE pLCDBuf  (PBYTE)GetVirtual(0x33f00000,0x100000); 20 memset(pLCDBuf,0,0x100000); 21  这种方法在WinCE6.0的模拟器中测试了一下能达到预期的效果。
http://www.pierceye.com/news/390277/

相关文章:

  • 阿里云 建设网站怎么样百度推广一级代理商名单
  • 湛江网站制作网站吉林省四平市网站建设
  • 酒店网站建设公司推广方法有哪些
  • 网站建设免备案免费空间wordpress在线教育主题购买
  • 网站后台验证码不显示成都市建设工程施工安监站网站
  • 榆林网站优化做图的网站
  • 在微信中做网站淄博 网站seo优化
  • 黑龙江省建设协会网站首页怎么用word做网站
  • 企业网站网站建设价格wordpress阶梯插件
  • 企业品牌建设方案范文roseonly企业网站优化
  • 电影资源采集网站咋做在百度上怎么建立网站吗
  • 好的企业网站设计方案中小企业网站建设 论文
  • 毕设网站建设论文网站开发合同履约
  • 织梦贷款网站源码备案过的网站换域名
  • 南宁网站seo顾问广州正规的免费建站
  • 温州教育网站建设建网站 陕西牛人网络科技
  • 青岛网站建设eoe世界杯现场直播
  • com网站建设中社交app定制开发
  • 阅读网站建设简易做海报网站
  • 上海企业网站建设推荐wordpress登录插件
  • 做网站的人联系电话可做产品预售的网站
  • 内部网络网站怎么做微信公众号推文制作软件
  • 什么网站做adsense好酒店官方网站建设书
  • 国家城乡与住房建设部网站做海报有什么参考的网站
  • 建德营销型网站建设企业邮箱地址怎么填写
  • 网站建设规划书总结怎么写wordpress 菜单链接
  • 网站目录程序重庆市建筑工程造价信息网官网
  • WordPress上传后找不到seo优化工程师
  • wordpress登录界面插件如何优化培训方式
  • 贵州建网站网站怎么优化自己免费