gh0st源码阅读--监控代码
2014-11-14 23:00
302 查看
void UIScreenItem::DrawNextScreenDiff() { bool bIsReDraw = false; int nHeadLength = 1 + 1 + sizeof(POINT) + sizeof(BYTE); LPVOID lpFirstScreen = m_lpScreenDIB; LPVOID lpNextScreen = m_pContext->m_DeCompressionBuffer.GetBuffer(nHeadLength); DWORD dwBytes = m_pContext->m_DeCompressionBuffer.GetBufferLen() - nHeadLength; if (dwBytes > 0) bIsReDraw = true; //这段落代码就是不停的迭代,首先是偏移量,然后是长度,以此类推,直到把所有的数据读完。 __asm { mov ebx, [dwBytes] mov esi, [lpNextScreen] jmp CopyEnd CopyNextBlock: mov edi, [lpFirstScreen] lodsd // 把lpNextScreen的第一个双字节,放到eax中,就是DIB中改变区域的偏移 add edi, eax <span style="white-space:pre"> </span>// lpFirstScreen偏移eax lodsd // 把lpNextScreen的下一个双字节,放到eax中, 就是改变区域的大小 mov ecx, eax sub ebx, 8 // ebx 减去 两个dword sub ebx, ecx // ebx 减去DIB数据的大小 rep movsb // 拷贝数据,根所ecx中的内容来决定循环后的次数,这里应当是拷贝到edx所指的地方 CopyEnd: cmp ebx, 0 // 是否写入完毕,ebx中的是所有的字节数 jnz CopyNextBlock } if (bIsReDraw) Invalidate(); }
相关文章推荐
- tomcat源码阅读_代码篇4
- tomcat源码阅读_代码篇8
- diamond源码阅读-目录监控
- spark源码阅读一-spark-mongodb代码分析
- TensorFlow0.8源码阅读 -- 代码目录结构讲解
- tomcat源码阅读_代码篇1
- redis4.0源码阅读(一):代码文件分目录
- 【第五篇】Volley代码修改之图片二级缓存以及相关源码阅读(重写ImageLoader.ImageCache)
- Spark源码阅读笔记:Standalone模式集群核心角色代码浅析
- spark源码阅读一-spark读写hbase代码分析
- tomcat源码阅读_代码篇10
- MySQL源码阅读笔记之代码结构
- [Chrome源码阅读]Chrome启动代码流程3
- TensorFlow0.8源码阅读 -- 代码目录结构讲解
- python源码分析阅读理解chapter01~05 (纯阅读书籍,代码未看)
- tomcat源码阅读_代码篇7
- [Chrome源码阅读]Chrome启动代码流程2
- [Chrome源码阅读]Chrome启动代码流程3
- diamond源码阅读-目录监控
- gh0st源码分析:屏幕监控