随意记一些东西吧,我还不太会记笔记。

  • DISCARDABLE很重要。在琢石成器中定义的资源都没有用到这个关键词,结果生成的EXE即使很小执行起来也很慢。我试着加上DISCARDABLE结果立马变快了
  • 关于获取控件文本的方法,这里有详细说明http://www.cnblogs.com/02xiaoma/archive/2012/07/10/2583944.html
  • 下面的代码将从szSource开始的dwSize大小的内存块移动到saDest处:
1 mov    esi,offset szSource 
2 mov    edi,offset szDest
3 mov    ecx,dwSize
4 cld
5 rep    movsb

 

  • 下面的代码将szDest处的dwSize字节填充为0:
1 xor    eax,eax
2 mov    edi,offset szDest
3 mov    ecx,dwSize
4 cld
5 rep    stosb
  •  用CreateFileMapping创建内存映射文件对象的时,第一个参数hFile指定一个文件句柄。如果句柄是属于一个已经打开的文件的,那么内存映射文件将在这个文件上面建立;如果需要建立存在于页文件中的内存映射文件供不同进程共享,那么hFile指定为-1。
  • 大部分类型的对象部属于创建它的线程,而是属于进程,这表现在创建对象的线程结束时,如果线程不去主动删除它们,系统不会自动删除它们,只有当整个进程结束时对象还没有被删除,系统才会自动删除它们。但是窗口和钩子这两种对象比较特殊,它们首先是由创建窗口和安装钩子的线程所拥有的,如果一个线程创建一个窗口或安装一个钩子,然后线程结束,那么系统会自动摧毁窗口或卸载钩子。
  • 线程对象可以提前被释放。对于大部分的句柄来说(如文件句柄hFile,文件寻找句柄hFindFile等),使用CloseHandle函数关闭句柄意味着整个对象被释放,但对于线程句柄来说,关闭它仅释放线程的统计信息,并不会终止线程的执行,所以如果不再需要使用线程句柄的话,在调用CreateThread后马上就可以将它关闭掉,线程的执行并不会受影响。
  • 学习SEH中设置回调函数的三条指令让我纠结了好久,最后忽然豁然开朗:原来是把EXCEPTION_REGISTRATION结构放在堆栈中的啊!汇编真好玩!

    代码如下:

    

 1 ;**********************************************
 2 ;在堆栈中构造一个EXCEPTION_REGISTRATION结构
 3 ;**********************************************
 4 assume    fs:nothing
 5 push      offset _Handler;SEH Handler异常处理程序
 6 push      fs:[0]
 7 mov       fs:[0],esp
 8 ;**********************************************
 9 ;指令
10 ;**********************************************
11 ;恢复原来的SEH链
12 ;**********************************************
13 pop       fs:[0]
14 pop       eax
15 ;**********************************************