DLL笔记

1.钩子子程
 系统用的是被监视的线程来调用此钩子子程的,但是其数据是不共享的.
  意味着钩子子程中的修改了全局变量,原来加载此DLL的中的全局变量是不会发生改变的.
   可能是堆栈线程的原因,导致它们的数据都不共享的..!! 在回调函数中,就算设置了
  静态变量,但是每次调用回掉函数,静态变量的时也是会被重新初始化.!~!

  所以如果要共享数据就得:
  #pragma   data_seg("Shared")
   //中间加入变量
  #pragma   data_seg()
  #pragma   comment(linker,"/SECTION:Shared,RWS")

2.在DLL中的钩子
 在DLL设置了全局钩子,那么将导致启动的每个进程都会被加载其DLL.

你可能感兴趣的:(DLL笔记)