2011-10的存档

DeviceIoControl与驱动交互

2011-10-31 11:14:03

DeviceIoControl的其实和ReadFile和WriteFile是一样的, 不过这个功能更强, 一次交互能够输入数据, 也可以输出数据. 更加暴力. DeviceIoControl内部创建的IRP是IRP_MJ_DEVICE_CONTROL类型的IRP, 然后操作系统会将这个IRP转发给驱动程序的分发函数中. 就是类似Win32下面的发送自定义消息了.. 但是又有点区别, 如果发送自定义消息, 如果跨进程, 那是不可以传递指针的, 但是和驱动那就无所谓了, 可以传递一块缓冲区过去, 多舒服.

阅读全文…

其他缓冲区方式模拟文件操作

2011-10-30 03:56:50

还有一种操作内存的方式, MicroSoft没有给其起名字, 然后Windows驱动编程详解上面就叫这种方式为其他方式, 其实什么方式没有什么所谓了.. 不过据说这种方式用的是非常少了. 一般需要快的时候使用MDL就已经很好了. 除非那种内核和用户态大量进行交互的程序才会想着用这个款式吧,貌似文件系统之类的驱动应该搞这个比较合适. 反正这个也只有学习的时候使用下了. 平时应该是用不到的.
 

阅读全文…

直接方式模拟文件读写

2011-10-29 08:28:42

上一篇说的是直接方式的读取设备, 这篇接着说. 其实还有两种方式的, 一种是直接方式读写设备, 这种方式需要创建完设备以后将Flags设置成DO_DIRECT_IO. 这种的话就是Windows内部给做内存映射, 所以相对比缓冲区方式的话就快多了.

阅读全文…

缓冲区设备模拟文件读写

2011-10-29 04:14:03

原来以为写Win32程序基于消息处理, 原来内核里面也是一个套路, 也差不多. 不过内核里面和这个消息肯定是有些区别的, 不过既然款式是一样的, 那么也就基本上可以等同理解了, 反正IO管理器会给你发送IRP, 然后你自己处理好这些个IRP, 那么基本上就OK了, 和Win32发送消息给你一样. 自己处理完返回系统. 看来MicroSoft那帮人还是比较暴力的..

阅读全文…

内核中注册表操作

2011-10-28 04:57:27

内核中的注册表操作和Win32下面是没有什么区别的. 最多来说就是函数的名字稍微换了下. 都是一个套路. 所以说学习新东西啊, 都是建立在旧东西的基础之上.而且内核中好像有一些比Win32更加好用的注册表操作函数. 一句话就可以实现很多功能. 真是舒服. 这些东西的话, 其实没有什么好说的,直接上代码吧, 代码能够说明一切.

阅读全文…

C语言结构体的内存结构

2011-10-28 03:26:48

原来一直没有试验过用结构体作为参数传递和返回, 一直说结构体作为参数传递很慢撒的, 所以也没有
去关心过结构体在内存中的存储形式, 这下上课讲到这个. 不得不关注下这个结构体的具体形式了..

阅读全文…

内核中文件操作

2011-10-11 10:13:57
文件操作也是比较有用的功能, 而且这部分功能也比较有用. 当然全部记录下来也没有什么营养. 学内核还是要学内核的架构. 关于这个函数的使用. 我觉得不经常使用的使用一次就可以了. 就像Win32下面的函数. 很多基本都用不上. 不过也没有什么问题!! 能够查就行. 不过一些非常常用的函数还查. 就有点….所以函数应该把套路稍微记下..

 

阅读全文…

内核中内存操作的一些函数

2011-10-10 10:21:07

内核下面分配内存很简单. 我倒. 比3环下面还简单呢. 3环还需要调用两次函数, 0环更加方便.. 呵呵! 当然这只是使用上了. 内核中比用户态多了个后备列表内存(LookasideList),这翻译真是差劲..不过我看kmdkit里面也是这样翻译. 就将就着用吧! 还有的中文书籍好像根本就不翻译.. 估计也是不知道应该怎么翻译吧!

 

阅读全文…

内核中的字符串操作

2011-10-10 07:05:04

内核下面操作字符串也不外乎就是初始化, 然后增,删,改,连接, 撒的. 和Win32下面没有太大的区别, 只是需要更多的耐心. 因为操作的是一个结构!
操作结构比操作以0结尾的字符串总是要难些的. 不过还好了. Windows里面已经提供了非常多的字符串方面操作的函数. 一般情况下也差不多够用了!
阅读全文…

最简单的NT式驱动

2011-10-09 07:15:12

一直想着, 再写点东西. 本来关于驱动这方面的话, 网上资料很丰富. 相对保护模式来说吧!所以不是很想写了. 还有说到这个写点东西的话. 我发现我也不是很适合写文章. 写出来只有自己才能够看懂!
还有搞到这个写文章的适合用什么语言写就是一个比较纠结的地方了. 用汇编语言的话. 也不是不可以kmdkit包里面已经有了不少写汇编所需的头文件和lib文件, 但是还是不够的, 在写wdm和wdf的时候,我发现我还是得去自己整理头文件. 我倒..不过不要要求太多了, 毕竟kmdkit东西也是比较多了. 搞这个的也比较辛苦, 没有什么成就感. 其实语言的话. 无所谓了. 主要是能够解决一些问题吧. 大牛都是这样说的..

阅读全文…