随笔分类 -  驱动开发

摘要:Linux驱动开发必看:详解神秘内核 (转) 本章要先浏览一下内核发出的启动信息,然后再逐个讲解一些有意思的点。 2.1 启动过程 图2-1显示了基于x86计算机Linux系统的启动顺序。第一步是BIOS从启动设备中导入主引导记录(MBR),接下来MBR中的代码查看分区表并从活动分区读取GRUB、LILO或SYSLINUX等引导装入程序,之后引导装入程序会加载压缩后的内核映像并将控制权传递给它。内... 阅读全文
posted @ 2010-04-17 12:33 辛勤耕耘 阅读(1631) 评论(0) 推荐(0)
摘要:NDIS 中间层驱动(IM Driver)的安装与卸载过程一.绑定过程1. DriverEntry中间层驱动对上层来说,扮演一个Miniport Driver的角色,它在上边沿向NDIS注册一组Miniportxxx函数;对于下层Miniport Driver来说,中间层驱动扮演一个Protocol Driver的角色,因此它在下边沿向NDIS注册一组Protocolxxx函数。Miniport ... 阅读全文
posted @ 2009-12-03 10:18 辛勤耕耘 阅读(1159) 评论(0) 推荐(0)
摘要:链 接: http://bbs.pediy.com/showthread.php?t=65053从NdisIntermediateMiniportdriver说吧,参考passthruNTSTATUSDriverEntry(INPDRIVER_OBJECTDriverObject,INPUNICODE_STRINGRegistryPath)程序入口没什么好说的而NDIS不符合WDM往下到了Ndis... 阅读全文
posted @ 2009-11-21 16:01 辛勤耕耘 阅读(1715) 评论(0) 推荐(0)
摘要:INF文件全称Information File文件,是Winodws操作系统下用来描述设备或文件等数据信息的文件。INF文件是由标准的ASCII 码组成,您可以用任何一款文字编辑器查看修改其中的内容。一般我们总是认为INF文件是系统设备的驱动程序,其实这是错误的认识,Windows之所以在安装某些硬件的驱动时提示需要INF文件是因为INF文件为该设备提供了一个全面描述硬件参数和相应驱动文件(DLL... 阅读全文
posted @ 2009-11-18 09:23 辛勤耕耘 阅读(1891) 评论(0) 推荐(0)
摘要:原文链接 概要:开发一个NDIS驱动是一项相对复杂的工作,这一方面是由于核心驱动本身有更多的限制和要求,有更多的“游戏规则”要求开发者理解和掌握,NDIS的复杂性把难度更是提高了,本文以PassThru为例,加上自己的理解,讲述了NDIS驱动的处理过程和在PassThru的基础上进行扩展的基本方法,本文并不是一个入门读物,所以没有提及任何核心驱动开发的相关知识,本文主要讲述的是NDIS中间层对数据... 阅读全文
posted @ 2009-08-20 17:50 辛勤耕耘 阅读(3789) 评论(0) 推荐(1)
摘要:牛站(Windows内核)Web站点: http://www.osronline.com 技术含量很高的Windows驱动开发站点,该站点的list基本上覆盖了所有Windows驱动开发的常见问题,强烈推荐; http://www.microsoft.com/whdc微软的驱动开发资源主页,可以获取很多官方资料; http://www.wd-3.com/该站点收集了一些比较好的Windows驱动开... 阅读全文
posted @ 2009-08-13 22:31 辛勤耕耘 阅读(467) 评论(0) 推荐(1)
摘要:WDM,即Windows Driver Model,是Windows环境下开发驱动程序的有力工具。必备知识给出一个WDM一书中描述windows 2000系统结构的一个截图: 驱动程序是一个分层的结构,一个硬件设备并不是只由一个驱动程序来管理,在它相关联的物理设备驱动程序之上,还有很多过滤驱动程序。与这些过滤驱动程序相关联的,就是这个物理设备对象的过滤器设备对象。那么,一个用户模式的请求,必须通... 阅读全文
posted @ 2009-08-02 13:04 辛勤耕耘 阅读(2270) 评论(0) 推荐(0)
摘要:Linux设备驱动程序学习(3)-并发和竞态 今天进入《Linux设备驱动程序(第3版)》第五章并发和竞态的学习。 对并发的管理是操作系统编程中核心的问题之一。 并发产生竞态,竞态导致共享数据的非法访问。因为竞态是一种极端低可能性的事件,因此程序员往往会忽视竞态。但是在计算机世界中,百万分之一的事件可能没几秒就会发生,而其结果是灾难性的。 一、并发及其管理 竞态通常是作为对资源的共享访问结果而产生... 阅读全文
posted @ 2009-07-27 18:03 辛勤耕耘 阅读(373) 评论(0) 推荐(0)
摘要:Linux设备驱动程序学习(2)-调试技术 今天进入《Linux设备驱动程序(第3版)》第四章调试技术的学习。 一、内核中的调试支持 在前面已经建议过:学习编写驱动程序要构建安装自己的内核(标准主线内核)。最重要的原因之一是:内核开发者已经建立了多项用于调试的功能。但是由于这些功能会造成额外的输出,并导致能下降,因此发行版厂商通常会禁止发行版内核中的调试功能。 为了实现内核调试,我在内核配置上增加... 阅读全文
posted @ 2009-07-27 18:00 辛勤耕耘 阅读(566) 评论(0) 推荐(1)
摘要:今天进入《Linux设备驱动程序(第3版)》第三章字符设备驱动程序的学习。 这一章主要通过介绍字符设备scull(Simple Character Utility for Loading Localities,区域装载的简单字符工具)的驱动程序编写,来学习Linux设备驱动的基本知识。scull可以为真正的设备驱动程序提供样板。 一、主设备号和此设备号 主设备号表示设备对应的驱动程序;次设备号由内... 阅读全文
posted @ 2009-07-27 17:56 辛勤耕耘 阅读(1327) 评论(0) 推荐(1)
摘要:  一个学习Linux设备驱动程序都会碰到的第一个例程: #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) {     printk(KERN_A... 阅读全文
posted @ 2009-07-27 17:50 辛勤耕耘 阅读(591) 评论(0) 推荐(1)
摘要:SourceUrl WDM驱动程序入门(1)——HelloWDM WDM驱动程序是一种很新的东西,相信很多人都跟我一样,对它很感兴趣,但是又找不到学习的切入点。究其原因,还是因为WDM是一种非常“死板板”的程序,它一运行就是工作在系统的底层RING 0处,提供各种接口给应用程序调用。也正因为如此,它不像普通的应用程序一样,可以很快地上手—... 阅读全文
posted @ 2009-06-29 12:26 辛勤耕耘 阅读(865) 评论(0) 推荐(0)