Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1348082
  • 博文数量: 81
  • 博客积分: 10060
  • 博客等级: 上将
  • 技术积分: 2366
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-17 14:44
文章分类
文章存档

2009年(6)

2008年(75)

我的朋友

分类: C/C++

2008-04-30 18:23:15

今天学习了一些基础的东西,都是相当简单的东西。先记录下:
 
MAKEINTRESOURCE是一个资源名转换的宏,
VC的定义是(winuser.h):
#define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i)))
#define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i)))
#ifdef UNICODE
#define MAKEINTRESOURCE MAKEINTRESOURCEW
#else
#define MAKEINTRESOURCE MAKEINTRESOURCEA
#endif // !UNICODE

这个宏是把一个数字类型转换成指针类型的宏,它不存在释放的问题.
用这个宏的主要原因是有的资源是用序号定义的,而不是字符串.所以要把数字转换成字符串指针,然后再传递给LoadResource之类的函数,这样才加载了资源.
要释放资源(用LoadResource加载的)可以调用FreeResource函数把LoadResource返回的指针传递给FreeResource.
 
MAKEINTRESOURCE这个东西,在SDK时经常使用,可以将资源的ID转换后,在程序中使用,原来的认识不深,不过后来群里有个网友问了这个问题,所以就搜索了下,算是大概明白吧。。
 
还有学写了DPC的基础概念,概念当然很简单,也容易理解,程序很容易写,不过写这个东西,蓝了我XX次虚拟机。YY的。代码是没有问题的,但是代码的位置是有问题,我把ExAllocatePool这个函数放在DriverEntry的开始处,就是变量定义的后面,则没有问题,如果放在IoCreateDevice这些函数后面,则会出现蓝屏,我真TMD想xxx了。这样也要出问题。。。
不过DPC过程是写好了,我想在里面不断进行SSDT HOOK,但是却有问题,因为不断的HOOK,则时候刚好有程序调用了HOOK的函数,则又会蓝屏了。。真是郁闷。。还不知道怎么解决中。。
 
明天就是51了,不过这个51是没什么感觉的,祝大家51快乐吧,吃饭去咯。
阅读(1536) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~