Windows内核编程
文章平均质量分 69
lambert_s
志之所趋,无远勿届,穷山复海不能限也;志之所向,无坚不摧!
展开
-
RtlFreeUnicodeString误用引起驱动程序错误
这几天一直在调一个驱动程序,今天终于调出来了,发现原来是RtlFreeUnicodeString函数引起的。先写一段小程序来做一个测试:#include VOID OnUnload(IN PDRIVER_OBJECT pDriverObj){ KdPrint(("Enter OnUnload!/n")); KdPrint(("Unload Successfully!/n"));原创 2009-10-20 23:11:00 · 2951 阅读 · 2 评论 -
[转载]键盘驱动原理
0 概述 我们将讨论 ps/2 键盘的驱动。主要讨论的内容有,ps/2 键盘的硬件,使用键盘驱动的应用层,键盘驱动的初始化,键盘驱动如何完成自己的工作,以及一些涉及到的相关内容。需要注意的是,以后我们提到的键盘,如果没有特殊说明,都是指 ps/2 键盘。1 ps/2 键盘的硬件 要以写一个硬件的驱动为目的的话,需要对这个硬件有一定的了解,但并不需要太深入,转载 2009-08-03 19:29:00 · 4886 阅读 · 0 评论 -
Windows内核学习笔记(六)-- [总结]创建IRP的四种不同方式
在驱动程序中,经常会调用其他的驱动程序;其中,手动构造IRP,然后将IRP传递到相应驱动程序的派遣函数中是一种比较简单的方法,下面就来介绍下手动创建IRP的几种不同的方法及其特点。 创建IRP总共有4种方法。分别通过调用:IoBuildSynchronousFsdRequest、IoBuildAsynchronou原创 2009-07-26 15:31:00 · 3796 阅读 · 0 评论 -
[转载]Windows内核技术的精华站点
[url]http://www.osronline.com[/url],技术含量很高的Windows驱动开发站点,该站点的list基本上覆盖了所有Windows驱动开发的常见问题,强烈推荐; [url]http://www.microsoft.com/whdc[/url],微软的驱动开发资源主页,可以获取很多官方资料; [url]http://www.wd-3.com/[/url],该站点转载 2009-07-25 20:26:00 · 1587 阅读 · 0 评论 -
Windows内核学习笔记(五)-- 详解CTL_CODE宏
我们在说DeviceIoControl函数时其第二个参数dwIoControlCode就是由CTL_CODE宏定义的,下边我们可以了解一下CTL_CODE的内容。 CTL_CODE:用于创建一个唯一的32位系统I/O控制代码,这个控制代码包括4部分组成:DeviceType(设备类型,高16位(16-31位)),Access(访问限制,14-15位),Function原创 2009-07-25 09:26:00 · 7927 阅读 · 0 评论 -
Windows内核学习笔记(四)-- 编写程序手动加载驱动程序
#include #include #include #include #define DRIVER_NAME "HelloDriver"#define DRIVER_PATH "..//MyDriver//HelloDriver.sys"//装载NT驱动程序BOOL LoadNTDriver(char* lpszDriverName,char* lpszD原创 2009-07-23 09:58:00 · 4835 阅读 · 1 评论 -
[转载]城里城外看SSDT
看了这篇文章,觉得写得很好,很实用,怕以后想找的时候找不到了,所以转过来。感谢文章作者马锐老师。原文链接:http://www.titilima.cn/show-201-1.html引子2006年,中国互联网上的斗争硝烟弥漫。这时的战场上,先前颇为流行的窗口挂钩、API挂钩、进程注入等技术已然成为昨日黄花,大有逐渐淡出之势;取而代之的,则是更狠毒、更为赤裸裸的词汇:驱动转载 2009-07-18 10:30:00 · 1531 阅读 · 1 评论 -
Windows内核学习笔记(二)-- IoCallDriver函数与PoCallDriver函数
今天看书的时候看到了这两个函数,开始还没在意,以为是同一个,功能应该一样。后来想想一样的干嘛还弄两个呢,于是就查了一下,发现这两个函数差别还蛮大的。首先来看这两个函数的原型:NTSTATUS IoCallDriver( IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp );NTSTATU原创 2009-07-19 19:23:00 · 8438 阅读 · 1 评论 -
Windows内核学习笔记(一)--浅谈驱动对象、设备对象与请求
最近在学习Windows内核编程,同时也接触到了一些驱动的概念,其中有一些概念让人比较容易混淆,所以就写了这篇文章发表一下自己的看法: 首先,谈谈驱动对象(DRIVER_OBJECT),可以说驱动对象代表的是一个驱动程序(或者叫内核模块)。在写内核程序时,必须要填写这样一种结构,来告诉Windows程序提供的功能。内核程序并不生成进程,它们有系统的System进程加载,可原创 2009-07-18 14:49:00 · 3888 阅读 · 1 评论 -
驱动程序内存分配
一、 何谓可分页和非分页内存 默认情况下,内核加载器会加载所有的代码部分和全局数据到非分页内存中。而且,加载器是一次加载整个驱动的可执行文件,包括相关的DLL。加载后,内核加载器关闭驱动程序文件,甚至你可以删除当前正在执行的驱动文件。但是,你可以告诉加载器你希望驱动的哪部分是可分页,所谓可分页,就是可能会被换页出内存(Page out)。可以原创 2009-10-26 18:58:00 · 1329 阅读 · 0 评论