今天学习了一些基础的东西,都是相当简单的东西。先记录下:
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快乐吧,吃饭去咯。
阅读(1602) | 评论(0) | 转发(0) |