对于NT式驱动来说,主要的函数是DriverEntry例程.卸载例程及各个IRP的派遣例程. 一.驱动加载过程与驱动入口函数(DriverEntry) 和编写普通应用程序一样,驱动程序有个入口函数,也就是首先被执行的函数.这个函数通常被命名为DriverEntry.该函数的原型为: NTSTATUS DriverEntry( _In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath ) DriverEntry主要是对驱…
开发工具:Visual Studio 2015 企业版 目 标 机:Windows XP X86 前提:我们已经成功安装了Visual Studio 2015以及WDK,而且更重要一点是一定要SDK版本和WDK版本保证一致,如果不一致会造成Visual Studio 2015里面C/C++的宏定义和使用的WDK不匹配,严重影响驱动程序的编译!关于这个问题,可以看这篇文章:http://www.cnblogs.com/sunylat/p/6286527.html 本博客所有相关工具和源码下载:ht…
基于Windows驱动开发技术详解这本书 一.简单的INF文件剖析 INF文件是一个文本文件,由若干个节(Section)组成.每个节的名称用一个方括号指示,紧接着方括号后面的就是节内容.每一行就是一项内容,其形式都是类似SomeEntry=SomwValue.每个项的顺序是可以颠倒的,但系统分析INF文件的时候,是顺序解析的.INF中注释语句是用分号开头的. 二.WDM设备安装在注册表中的变化 WDM式驱动程序的安装会在三个方面修改注册表,分别是硬件子键(Hardware).类子键(Class…
因为工作原因,需要做一些与网卡有关的测试,其中涉及到了驱动这一块的知识,虽然程序可以运行,但是不搞清楚,心里总是不安,觉得没理解清楚.因此想看一下驱动开发.查了很多资料,看到有人推荐Windows驱动开发技术详解这本书,因此本篇文章也是基于这本书进行学习的.有些图片也是按照书上自己画的. Windows操作系统示意图 首先,需要下载相应的工具,将环境搭建起来,VS和WDK,由于我已经安装了VS2017,所以需要找对应版本的WDK(方法).如果想要查OS的版本,可以WIN+R输入winver就可以…
数据结构是计算机程序的核心,I/O管理器定义了一些数据结构,这些数据结构是编写驱动程序时所必须掌握的.驱动程序经常要创建和维护这些数据结构的实例. 一.驱动对象(DRIVER_OBJECT) 每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候,被内核中的对象管理程序所创建的. 驱动对象用DRIVER_OBJECT数据结构表示,它作为驱动的一个实例被内核加载,并且内核对一个驱动只加载一个实例.确切地说,是由内核中的I/O管理器负责加载的.驱动程序需要在DriverEntry…
一.进程池 进程池也是通过事先划分一块系统资源区域,这组资源区域在服务器启动时就已经创建和初始化,用户如果想创建新的进程,可以直接取得资源,从而避免了动态分配资源(这是很耗时的). 线程池内子进程的数目一般在3-10个之间,当有新的任务来到时,主进程将通过某种方式选择进程池中的某一个子进程来为之服务.相比于动态创建子进程,选择一个已经存在的子进程的代价显得小得多(进程开启过多,效率反而会下降,开启进程是需要占用系统资源的,而且开启多余核数目的进程也无法做到并行). Pool可以提供指定数量的进程…
好家伙,军训结束了,回归 Vue实例的生命周期 1.什么是生命周期? 从Vue实例创建,运行到销毁期间总是伴随着各种各样的事件,这些事件,统称为生命周期. 2.什么是生命周期钩子? 生命周期函数的别称. 生命周期钩子=生命周期函数=生命周期事件 3.一些生命周期函数 3.1. beforeCreate 这是第一个,表示在实例在完全被创建出来之前(什么方法,数据都还没有被处理),会执行它. 3.2. created 这是第二个,在created中,data和methods都已经被初始化好了, 3.…
ScrollTricks是一个开源控件,实现了两个简单功能: 1.Quick Return:向上滑动时,View也向上滑动并且消失,当向下滑动时,View马上出现.例如Google Now的搜索功能. 2.Sticky:类似的同步滚动,特定的View最多滑动到顶部并保持固定不动.例如大众点评或美团的"立即购买"功能. <com.example.android.scrolltricks.ObservableScrollView xmlns:android="http://…
1.public: public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private: private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用. 3.protected: protected对于子女.朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private.…
一. 简单工厂 简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 简单工厂的用处不大,主要就是一个if...else语句 结合一个具体的例子,把上面的图再对应一下 # 1. 定义一个工厂,对应图中的接受参数 class BigCat(object): # 接受参数(接受原材料) def __init__(self, money): self.money = money # 工厂基本的生产模板 def pa…