VC/DDK/DriverWorks开发环境配置
摘要:1·前言开发windows内核驱动程序是一个非常具有挑战性的工作,你得忍耐调试过程中操作系统 不断蓝屏、不断崩溃的噩梦,所以强烈建议你采用虚拟机做开发平台,这样即使把整个系统都搞蹦了,大不了从新装过虚拟机而已。那么搭建一个完整的 Windows驱动开发环境是每个人必须迈过的第一道坎。本文将具体介绍如...
阅读全文
posted @
2014-06-25 23:12
木椅
阅读(1801)
推荐(1)
windows下注册表脚本编写
摘要:Reg文件就是我今天所说的注册表脚本文件,双击可将其中的数据写入注册表.利用注册表脚本文件可以对注册表进行关于键值的任何操作,而且还不受注册表被禁用的限制. 我们平常对注册表的修改大体上可以分为两种: 1.对注册表子键的修改; 2.对子键下的键值的修改; 下面依次对这两种修改做个简略的介绍.一,对子...
阅读全文
posted @
2014-06-25 22:44
木椅
阅读(5253)
推荐(1)
IRQL
摘要:IRQL是Interrupt ReQuest Level,中断请求级别。一个由windows虚拟出来的概念,划分在windows下中断的优先级,这里中断包括了硬中断和软中断,硬中断是由硬件产生,而软中断则是完全虚拟出来的。处理器在一个IRQL上执行线程代码。IRQL用于帮助决定线程如何被中断的。在同...
阅读全文
posted @
2014-05-26 13:20
木椅
阅读(287)
推荐(0)
DPC究竟是什么
摘要:DPC究竟是什么DPC是“Deferred Procedure Call”的缩写,意为推迟了的过程(函数)调用。这是因为,逻辑上应该放在中断服务程序中完成的操作并非都是那么紧迫,其中有一部分可能相对而言不那么紧迫,而又比较费时间,实际上可以放在开中断的条件下执行。如果把这些操作都放在中断服务程序中,...
阅读全文
posted @
2014-05-07 12:38
木椅
阅读(4725)
推荐(0)
IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表
摘要:原文:IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表IDT,Interrupt Descriptor Table,中断描述符表是CPU用来处理中断和程序异常的。一、有关IDT的基本知识1、中断时一种机制,用来处理硬件需要向CPU输入信息的情况。 比如...
阅读全文
posted @
2014-05-07 12:37
木椅
阅读(3954)
推荐(1)
windows内核情景分析之中断处理(毛德操)[转]
摘要:中断处理每个cpu有一张中断表,简称IDT。IDT的整体布局:【异常->空白->5系->硬】(推荐采用7字口诀的方式重点记忆)异常:前20个表项存放着各个异常的描述符(IDT表不仅可以放中断描述符,还放置了所有异常的异常处理描述符,0x00-0x13)保留:0x14-0x1F,忽略这块号段空白:接下...
阅读全文
posted @
2014-05-07 12:00
木椅
阅读(1298)
推荐(0)
windows驱动开发详解学习笔记
摘要:1. windows驱动分两类,NT式驱动和WDM驱动,后者支持即插即用; 2. DriverEntry是入口函数,传入参数:pDriverObject由IO管理器传入; 3. WDM驱动中,AddDevice创建设备对象,由PnP管理器调用;传入参数:(DriverObject, PhysicalDeviceObject),第一个参数是DriverEntry的传入参数,第二个参数由总线驱...
阅读全文
posted @
2014-04-23 10:17
木椅
阅读(880)
推荐(0)
9030PCI CAN驱动开发点滴
摘要:1.配置EEPROM. 使用PlxMon打开9030,基本修改Spacex(0,1,2,3), Chip selectx(0,1,2,3), 中断状态INTCSR(0x74), 其他(0x78),详细说明一下。(1)Spacex、Chip Selectx首先明确使用哪几个本地地址空间(9030本地端几个RAM?硬件连接几根CS信号线?),例如硬件将CS0信号连接RAM1,CS2信号连接RAM2,那么你需要配置Space0和Space2. 4个Space的配置方法一样,看你需要哪个就配置哪个,不需要的禁用之。举例:我的硬件CS0挂了一片16KB的RAM1,本地总线8数据位宽,CS1挂了4K的RA
阅读全文
posted @
2014-04-12 19:50
木椅
阅读(1156)
推荐(0)
驱动开发中应该注意的事项
摘要:1.一定不要在没有标注I/O请求数据包(IRP)挂起(IoMarkIrpPending)的情况下通过调度例程返回STATUS_PENDING。2.一定不要通过中断服务例程(ISR)调用KeSynchronizeExecution。它会使系统死锁。3.一定不要将DeviceObject->Flags设置为DO_BUFFERED_IO和DO_DIRECT_IO。它会扰乱系统并最终导致致命错误。而且,一定不要在DeviceObject->Flags中设置METHOD_BUFFERED、METHOD_NEITHER、METHOD_IN_DIRECT或METHOD_OUT_DIRECT,因为
阅读全文
posted @
2014-04-10 16:55
木椅
阅读(548)
推荐(0)
如何使用PLX提供的官方驱动和SDK发布自己的产品?
摘要:在我的第一篇博文Plx9030通讯卡驱动开发提到,PLX官网提供了丰富的9000系列(9030,9052,9054)芯片的驱动文件(sys)和SDK开发包。我们在发布自己的产品时,简单的话,可以直接用官方sys文件,用SDK做二次接口封装。然而,在利用官方sys文件时,需要注意几个事情,这是PLX公司建议的。设置硬件ID为了避免设备冲突,发布自己产品建议设置硬件ID. 硬件ID用来区别与其他系统内的设备,告知软件哪一个是与之匹配的。根据PCI2.0规范,PCI配置空间(256B)的前64个字节含义是标准的,包含verdor id、device id、subsys id、reversion id
阅读全文
posted @
2014-03-28 11:49
木椅
阅读(4278)
推荐(0)
一篇perfect描述“神秘”inf文件的文章[转]
摘要:INF Files for Bears of Little BrainMay 1, 2003Brian CatlinCopyright � 2003 by Brian Catlin. All rights reservedJust the other day, while walking through the hundred acre wood, I was accosted by the local fauna."Excuse me", asked a small pink pig. "B-B-B-But do you know anything about
阅读全文
posted @
2014-03-27 18:37
木椅
阅读(860)
推荐(0)
关于windows 设备驱动重要的事实
摘要:1. windows采用设备树描述所有挂在系统总线上的设备,每个设备对应一个节点。2.每个设备有自己的device object stack/driver stack. 一个物理上的设备对应多个device object.3.系统加电后,PnP管理器要求(PCI)总线驱动程序枚举(enumerte)挂载的设备信息,bus diver响应此请求,扫描物理设备(IDSEL),为每个物理设备建立物理设备对象(physical device object,PDO).PnP管理器会查找注册表,搜索哪些驱动程序为该PDO服务,建立设备堆栈。见文章设备对象与设备堆栈4.用户空间和内核空间的关键区别:用户模式
阅读全文
posted @
2014-03-26 17:15
木椅
阅读(346)
推荐(1)
Plx9030通讯卡驱动开发与接口封装
摘要:在学校的时候,曾经采用DDK+Driverstudio+VC6.0环境做过9054视频采集卡的驱动开发,回想起调试过程,记得最清楚的就是过无数次的计算机蓝屏重启。。。。今天第一天来到新公司,老大就说你以前不是做过PCI驱动的开发嘛,手头上刚好有一个PCI-CAN的通信卡项目,你把驱动程序写一写。那就干活吧。1. PCI设备上电与驱动加载PCI总线标准是一种将系统外部设备连接起来的总线标准,是PC中最重要的总线,实际上是系统的各个部分如何交互的接口。在当前的 PC 体系结构中,几乎所有的外部设备采用的各种各样的接口总线,均是通过桥接电路挂接到 PCI 系统上。在这种 PCI 系统中, Host/
阅读全文
posted @
2014-03-18 15:48
木椅
阅读(2745)
推荐(0)