随笔分类 -  驱动程序开发

驱动下的异常处理
摘要:try-except用法 try except是windows 系统独有的异常处理模型,windows的异常处理模式,称为SEH( structured exception handling ), SEH的异常处理模型主要由try-except语句来完成,与标准的try catch相似。与C++异常处理模型使用catch关键字来定义异常处理模块,而SEH是采用__except... 阅读全文

posted @ 2015-12-06 12:43 I_am 阅读(1840) 评论(0) 推荐(0)

驱动程序进阶篇
摘要:我们学习程序设计,都是从“Hello World”开始的,驱动程序也不例外,今天我就写一个驱动版的“Hello World”来热热身,目的希望大家能对驱动程序的基本框架有所了解。 驱动程序分为2类,一个是 Kernel(内核) 模式驱动,另一个是 Windows (用户窗口层)模式驱动,2种模式本质是相同,但细节不同,本文介绍的是内核模式驱动和驱动程序的安... 阅读全文

posted @ 2015-12-06 12:15 I_am 阅读(623) 评论(0) 推荐(0)

驱动中链表的使用
摘要:链表是驱动开发中经常遇到的一个数据结构,主要是双向循环链表;要使用链表,需要用到一个LIST_ENTRY的结构,其定义如下:typedef struct _LIST_ENTRY { struct _LIST_ENTRY *Flink; // 指向下一个节点(后继) struct _LIST_ENTR... 阅读全文

posted @ 2015-12-05 20:29 I_am 阅读(2462) 评论(0) 推荐(0)

内存操作相关内核 API 的使用
摘要:1、RtlCopyMemory 、RtlCopyBytes、RtlMoveMemory;2、RtlZeroMemory、RtlFillMemory;3、RtlEqualMemory;4、ExAllocatePool、ExFreePool;5、New(重载)、Delete操作符一、内存的复制与移动1、... 阅读全文

posted @ 2015-12-04 20:22 I_am 阅读(2795) 评论(0) 推荐(0)

链表的概念、建立、删除与插入
摘要:我们知道,数组式计算机根据事先定义好的数组类型与长度自动为其分配一连续的存储单元,相同数组的 位置和距离都是固定的,也就是说,任何一个数组元素的地址都可一个简单的公式计算出来,因此这种结 构可以有效的对数组元素进行随机访问。但若对数组元素进行插入和删除操作, 则会引起大量数据的移动, 从而使简单的数... 阅读全文

posted @ 2015-12-02 17:05 I_am 阅读(2064) 评论(0) 推荐(0)

编写简单的 NT 式驱动程序的加载与卸载工具
摘要:写驱动的加载需要用到五个函数:OpenSCManager()CreateService()OpenService()StartService()CloseServiceHandle()这五个函数的作用和用法,我在代码中会进行说明。正常加载驱动的步骤如下:1、调用 OpenSCManager 这个 W... 阅读全文

posted @ 2015-11-30 18:16 I_am 阅读(1347) 评论(0) 推荐(0)

驱动程序入门篇
摘要:驱动程序分为两类: 一个是 Kernel(内核) 模式驱动,另一个是 Windows (用户窗口层)模式驱动。这两种模式本质是相同,但细节不同。本文介绍的是内核模式驱动和驱动程序的安装与使用。驱动程序同普通的 .exe,.dll 一样,都属于 PE 文件,而且都有一个入口函数。但 .exe 中,入口... 阅读全文

posted @ 2015-11-26 18:52 I_am 阅读(7032) 评论(0) 推荐(1)

CTL_CODE 宏 详解
摘要:CTL_CODE宏CTL_CODE:用于创建一个唯一的32位系统I/O控制代码,这个控制代码包括4部分组成:DeviceType(设备类型,高16位(16-31位)),Function(功能2-13 位),Method(I/O访问内存使用方式),Access(访问限制,14-15位)。这个宏创建一个... 阅读全文

posted @ 2015-11-20 20:46 I_am 阅读(6820) 评论(0) 推荐(1)

IRP 与 派遣函数
摘要:什么是派遣函数: 派遣函数是 WIndows 驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的。也就是说,派遣函数是用来处理驱动程序提交过来的 I/O 请求。 那什么是 I/O 请求呢? 上层程序与驱动程序之间通信时,上层会发出I/O请求,即输入... 阅读全文

posted @ 2015-11-19 20:57 I_am 阅读(2000) 评论(0) 推荐(0)

RtlInitUnicodeString、IoCreateDevice、IoCreateSymbolicLink、IoDeleteDevice 四个 API 驱动函数的使用
摘要:要解释“驱动对象”,就得先从 DriverEntry() 说起: 做过C语言开发的都知道程序是从 main() 函数开始执行。在进行 Windows 驱动程序开发的时候没有 main() 函数作为函数入口,取而代之的是 DriverEntry(). DriverEntry() 的原型如下: extern "C" NTSTATUS DriverEntry... 阅读全文

posted @ 2015-11-19 10:29 I_am 阅读(3922) 评论(0) 推荐(0)

导航