设备扩展(DEVICE_EXTENSION)】的更多相关文章

原文链接:http://blog.csdn.net/hazy/article/details/481705 WDM中的结构   ---设备扩展 设备扩展(DEVICE_EXTENSION)是与设备对象相关的另一种重要的数据结构.可以用它来保存与特定设备关联的信息.设备扩展其实只是一个未分页的池,由驱动开发者来定义它的大小和内容.并由I/O管理器自动把它分配给设备对象,即设备对象的PVOID DeviceExtension字段.由于此结构是驱动开发者自定义的,所以必须要让系统知道需要给此结构预留多…
设备对象Device_Object记录通用设备信息,另外一些信息记录在设备扩展里,设备扩展由程序员自己定义,由程序员指定内容和大小,由I/O管理器创建,并保存在非分页内存中. 驱动程序中,尽量避免使用全局函数,因为全局函数往往导致函数的不可重入性, 重入性是指,在多线程程序中,多个函数并行运行,函数的运行结果不会根据函数的先后调用顺序而导致不同, 解决办法是,将全局变量以设备扩展的形式存储,并加以适当的同步保护措施, 除此之外,在设备扩展中,还会记录以下一些内容, 1,设备对象反向指针, 2,设…
1)跳入到基础篇的内核编程第7章,驱动入口函数DriverEnter的返回值决定驱动程序是否加载成功,当打算反汇编阅读驱动内核程序时,可寻找该位置. 2)DRIVER_OBJECT下的派遣函数(分发函数)指针的个数为:IRP_MJ_MAXINUM_FUNCTION,保存在一个数组中,编写驱动程序,实质上就是自己编写处理I/O请求IRP包的派遣函数,可以使用for循环将所有的派遣函数注册到同一个派遣函数.分发函数类似MFC消息机制中的回调函数,它的名字也是程序员自定义的,但是参数确定.卸载函数通过…
USB设备驱动 ·  )USB Hub:每个USBHost控制器都会自带一个USB Hub,被称为根(Root)Hub.这个根Hub可以接子(Sub)Hub,每个Hub上挂载USB设备.一般PC有8个USB口,通过外接USB Hub,可以插更多的USB设备.当USB设备插入到USBHub或从上面拔出时,都会发出电信号通知系统.这样可以枚举USB设备,例如当被插入的时候,系统就会创建一个USB物理总线,并询问用户安装设备驱动.如图17-4所示为一个典型的USB Hub的示意图. 是控制管道,管道1…
1.  ExAllocatePool() 函数说明: ExAllocatePool allocates pool memory of the specified type and returns a pointer to the allocated block. 函数定义: PVOID ExAllocatePool( __in  POOL_TYPE PoolType, __in  SIZE_T NumberOfBytes ); 代码中用来分配设备描述DMA adepter设备的特性(DEVICE…
设备驱动 设备栈:从上层到下层的顺序依次是:过滤设备.类设备.过滤设备.小端口设备[过.类.过滤.小端口] 驱动栈:因设备堆栈原因而建立起来的一种堆栈 老式驱动:指不提供AddDevice的驱动,又叫NT式驱动 Wdm驱动:指提供了AddDevice的驱动 驱动初始化:指IO管理器加载驱动后,调用驱动的DriverEntry.AddDevice函数 设备栈中上层设备与下层设备的绑定关系不是一对一,而是一对多.一个设备可以同时绑定到N个下层设备上去,而一个下层设备,也可以同时被N个上层设备绑定,但…
名词解释 802.1X: IEEE802 LAN/WAN 委员会为解决无线局域网网络安全问题,提出了 802.1X 协议.后来,802.1X协议作为局域网端口的一个普通接入控制机制在以太网中被广泛应用,主要解决以太网内认证和安全方面的问题.802.1X 协议是一种基于端口的网络接入控制协议(port based network access control protocol)."基于端口的网络接入控制"是指在局域网接入设备的端口这一级对所接入的用户设备进行认证和控制.连接在端口上的用户…
入口函数,即驱动加载函数 NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ) /*++ Routine Description: Installable driver initialization entry point. This entry point is called directly by the I/O system. Arguments: DriverObje…
WDM驱动的基本结构: WDM驱动模型是建立在NT式驱动程序模型基础之上的.对于WDM驱动程序来说,一般都是基于分层的,即完成一个设备的操作,至少要由两个驱动设备共同完成. 1)物理设备对象和功能设备对象 物理设备对象(Physical Device Object,PDO)和功能设备对象(Function Device Object,FDO)的关系是“附加”与“被附加”的关系. 当PC插入某个设备时,PDO会自动创建.确切的说,是由总线驱动创建的.PDO不能单独操作设备,需要配合FDO一起使用.…
Windows驱动程序分为两类:一类是不支持即插即用功能的NT式驱动程序:另一类是支持即插即用功能的WDM驱动程序. NT式驱动的基本结构: 1)驱动加载过程与驱动入口函数DriverEntry: 驱动程序入口点函数通常命名为DriverEntry,也可以指定另外的名字,但最好遵循这个名字: DRIVER_INITIALIZE DriverEntry; NTSTATUS DriverEntry( __in  struct _DRIVER_OBJECT *DriverObject, //指向驱动对…
原文链接:http://www.programlife.net/io_remove_lock.html IO_REMOVE_LOCK(删除锁)的具体结构没有公开,WDK的文档中中查不到IO_REMOVE_LOCK.最开始看到IO_REMOVE_LOCK是在WDK的例子event中.下面是参考网上的一些资料之后的一点总结,错误的地方请指正.新增内容:WDK8.1 中是可以看到这个结构的,在wdm.h中. 为什么要用IO_REMOVE_LOCK? WDM 驱动程序在处理设备删除 IRP 并释放驱动程…
Author:  sinisterEmail:   sinister@whitecell.orgHomepage:http://www.whitecell.org Date:    2007-02-26 /******************************************************************* 这个键盘过滤驱动是一个定时锁定计算机程序的功能部分,以前 lgx 写过一个 linux 版,现在我们需要实现一个 windows 版.这部分的 功能要求如下:…
1 实验要求(WDM驱动)     2 编写过程   2.1 确立整体架构   2.1.1 入口函数——DriverEntry   (1)作用 设置pDriverObject结构体,注册AddDevice和相关PNP函数,包括IRP_MJ_PNP,IRP_MJ_CREATE等 (2)注意 AddDevice在Driver_Object结构体的DriverExtension->AddDevice,原型是NTSTATUS AddDevice (PDRIVER_OBJECT pDriverObject…
文件系统 一台机器上可以安装很多物理介质来存放资料(如磁盘.光盘.软盘.U盘等).各种物理介质千差万别,都配备有各自的驱动程序,为了统一地访问这些物理介质,windows设计了文件系统机制.应用程序要访问存储在那些物理介质上的资料时,无需直接访问,只需借助文件系统即可对其有效访问.各种物理介质的存储方式千差万别,文件系统则按照'文件'的概念,把要存储的资料以文件为单位进行存放,然后,读取的时候也以文件为单位进行读取.当应用程序要访问资料时,只需指明'文件名+文件内偏移',文件系统自然就能找到实际…
一.NT式驱动的基本例程 1. 驱动入口函数——DriverEntry // 驱动程序的一般性定义 NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath); // DriverEntry的主要工作是对驱动程序进行初始化.它由系统进程System调用的. 驱动被加载的时候会创建一个驱动对象,查询此驱动程序对应的注册表项. DriverEntry被调用的时候会传进两个参数.他们分别…
windows驱动程序基础.转载标明出处:http://blog.csdn.net/ikerpeng/article/details/38777641 windows驱动程序结构: 我想说的是windows驱动程序的结构和C++的程序结构是一样的,在你知道这一点以后你就会认为简单了很多. 首先在一个头文件中面做一些必要的预处理.然后定义会用到的设备扩展结构体(相当于Class):接下来就是函数的声明. 当这一切结束以后,我们就在.cpp文件中面实现这些函数.可是不一样的地方要说一下: 1.这里声…
本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan全部,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/50380577 在上面的两篇博文中,介绍了IRP与派遣函数,以及我们通过了一个样例"磁盘设备的绝对读写"来演示了在应用程序中是怎样向一个设备发出I/O请求的.这篇博文将演示在驱动程序中处理一个很easy的I/O请求--由DeviceIoControl这个Win32API经过…
第 1 章 从两个最简单的驱动谈起 Windows 驱动程序的编写,往往需要开发人员对 Windows 内核有深入了解和大量的内 核调试技巧,稍有不慎,就会造成系统的崩溃.因此,初次涉及 Windows 驱动程序开发的 程序员,即使拥有大量 Win32 程序的开发技巧,往往也很难入门. 本章向读者呈现两个最简单的 Windows 驱动程序,一个是 NT 式的驱动程序,另一个 是 WDM 式的驱动程序.这两个驱动程序没有操作具体的硬件设备,只是在系统里创建了 虚拟设备.在随后的章节中,它们会作为基…
Performance Tunning for Tile-Based Architecture Tile-Based架构下的性能调校 by Bruce Merry GameKnife译 译序 在大概1个月之前,花了两个小时的时间阅读了OpenGL Insights上的两篇关于移动平台GPU的优化文章.当时正巧在公司作移动渲染器的优化和整理,顿觉醍醐灌顶.同时搜索国内关于这方面的经验文正或者翻译文章,感觉少之又少.所以,萌发了翻译这两篇文章的想法.其实也是第一次做翻译工作,本觉读两篇文章就用两个小…
同样也是寒江独钓的例子,但只给了思路,现贴出实现代码 原理是通过改变端口驱动中本该调用类驱动回调函数的地方下手 //替换分发函数 来实现过滤 #include <wdm.h> #include <ntddk.h> #include <Ntddkbd.h> #include <windef.h> // Kbdclass驱动的名字 #define KBD_DRIVER_NAME L"\\Driver\\Kbdclass" //ps2的端口驱动…
Alljoyn之管中窥豹 一.历史: Alljoyn是高通2011年推出的近距离P2P通讯技术,它为分布式应用程序在不同设备中提供了运行环境,特别是移动性.安全性和动态配置,支持Microsoft Windows.Linux.ios和Android等主流的操作系统平台,可以说AllJoyn是专门处理异构分布式系统中的难题而产生的,同时Alljoyn还是一项开源项目(项目地址http://www.alljoyn.org),按道理说应该很火才对, (怎么就没火起来呢???) 年12月份将该项目贡献了…
今日遇见一个开超市的朋友,真没想到在高校开超市一个月可以达到月净利润50K,相比起我们程序员的工资,真是不可同日而语,这个世道啊,真是做程序员不如经商开超市, 我们高科技的从业者,真是造原子弹不如卖茶叶蛋. 请见代码详细注释 //  修复涉及后视列表的Win2K兼容性 //  Fixes Win2K compatibility regarding lookaside lists. // #ifndef _WIN2K_COMPAT_SLIST_USAGE // Add content(增加内容)…
源代码已经整理过了,去除了不需要的项目. 注意:以前文章中出现过的Git已经变更过了,请以前关注过,Fork过的朋友,重新Fork一下. GitHub地址 卡牌XML文件的做成:(Git上面是没有XML文件的,原因是数量比较多,更新比较频繁,所以,运行游戏前,请自行生成) 代码里面有一个CardHelper的工程,运行这个工程: 资料导入导出…
PsCreateSystemThread 创建一个执行在内核模式的系统线程. 注意:创建线程必须用函数PsTerminateSystemThread强制线程结束.否则该线程是无法自动退出的. 函数原型: NTSTATUS PsCreateSystemThread( _Out_      PHANDLE ThreadHandle, _In_       ULONG DesiredAccess, _In_opt_   POBJECT_ATTRIBUTES ObjectAttributes, _In_…
驱动对象: 每个驱动程序都会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载时被内核中的对象管理程序所创建的.驱动对象用DRIVER_OBJECT数据结构表示,它作为驱动的一个实例被内核加载,并且内核对一个驱动只加载一个实例.确切地说,是由内核中的I/O管理器负责加载的,驱动程序需要在DriverEntry中初始化.驱动对象的结构定义如下(wdm.h): typedef struct _DRIVER_OBJECT { //结构的类型和大小 CSHORT Type; CSHORT Size;…
一.固件说明: 硬件版本:0,logic.3 固件版本:1.0.2.build851 编译日期:2015-06-26 ====================================== 二.固件版本说明: 1.修复bug : 标准函数界面,点击右下方按钮时界面假死(当前波形为非方波,非三角波) 方波的频率设定为10KHz-1MHz,波形抖动问题 2.增加功能 增加远程控制功能,并通过SCPI命令实现对设备的远程控制(目前仅支持function.apply两个命令) 3.请解压 参考命令…
备份 1. 只有在有信心能在紧急情况下完成迅速部署的情况下,备份才是有用的.所以,无论选择了哪种备份技术,一定要对备份及恢复备份的操作进行练习,知道了然于心. 2. 通常情况下,应对副本集的非主节点(与主节点相对)进行备份. 3. 对服务器进行备份 1). 文件系统快照:使用快照备份需要开启日记系统.该方法无需其他准备,只需生成快照即可,时间不限. 如果是对正在运行的系统生成快照,那么快照的数据内容本质让相当于使用kill -9 命令强制终止后的数据内容.因此,mongod在启动时会对日志文件进…
原文: http://www.blogjava.net/yongboy/archive/2015/05/07/424917.html tcp是一个非常复杂并且古老的协议, 之前教科书上将的很多东西应用到实际的时候会发现很多问题, 比如tcp一定是可靠的连接, 深入了解之后发现这只能保证在一定程度上可靠, 本文整理了tcp协议的诸多不足, 希望每一个做架构的同学都抽时间深入理解tcp协议, 理解linux的tcp协议实现原理. TCP自从1974年被发明出来之后,历经30多年发展,目前成为最重要的…
JBoss7配置指南   1.    jboss各主要版本特性... 3 1.1.     jboss4特性... 3 1.2.     jboss5特性... 5 1.3.     jboss6特性... 6 1.4.     jboss7特性... 7 2.    为什么JBoss AS7 这么快... 8 3.    JBoss AS7中的新概念-域... 10 3.1.     域(Domain)的概念及其与群集(Cluster)的区别... 10 3.2.     实验... 11 1…