通常我们可以使用一些驱动加载工具来改变我们驱动的行为,如加载驱动时执行入口函数与卸载函数,这里是我用当我们点击Start时会调用DriverEvent函数,并且正常加载

但当我们点击Stop卸载时确报了错:

报错的大致意思是:这个驱动不支持这样的操作
这个原因是因为我们没有设置Unload函数,Windows Driver Server在卸载的时候会先检查这个驱动是否具有Unload函数,如果没有则不会去卸载,如果有的 情况下Server会将它从内核空间中移除,在移除之前会先调用Unload,在这个里面我们可以去做一些收尾工作,然后Server会将它移除。

Server移除它是有条件的,首先必须确保这个驱动里已经没有线程和没有IRP(I/O Request Package,即输入输出请求包,上层与下层没有任何联系了)在处理了,比如上层软件使用CreateFile函数与驱动建立了联系,那么就处于被引用的状态,在DRIVER里有一个引用计数器,当这个Driver被其它程序所使用时会使这个引用计数器递增,当卸载时需要保证它为0,同时当增加设备对象引用时也会使这个引用计数器递增1

首先创建一个Unload函数:

VOID UnloadDevice (IN PDRIVER_OBJECT pDriverObject){}

然后在DriverEvent函数里将它指向:

NTSTATUS DriverEntry (IN PDRIVER_OBJECT pDriverObject,IN PUNICODE_STRING pRegistryPath   )
{pDriverObject->DriverUnload = UnloadDevice; return STATUS_SUCCESS;}

当我们设置完Unload函数之后重新build,在加载然后Stop就可以看到成功了:

注意这个设置Unload方式在WDK框架上不适用,仅适用于NT框架。

Windows Driver开发_NT Driver框架:The driver is not in a state to accept this command相关推荐

  1. Windows Driver开发_安装与配置环境

    首先到这个网站里去下载Visual Studio2019,注意目前最新版的WDK仅支持Visual Studio2019,如果要下载2022版本目前推出了预览版,但需要申请下载,所以这里以2019为例 ...

  2. Windows Driver Development Debug Assist Windows驱动开发助手

    Windows 驱动开发助手 功能 FFU烧录操作入口 Enable/Disable BCDEdit Debug Windbg COM口调试启动 Driver Replace替换 一键弹出SD卡 GI ...

  3. nvidia相机开发--传感器驱动编程指南---sensor driver programming guide

    /本文档适用于R32.2.1版本/ 实现相机传感器驱动器使得能够通过传感器提供的原始格式通过CSI总线获取相机数据. 根据相机和应用程序的不同,有两种类型的相机编程路径. • Camera Core ...

  4. SECS/HSMS Driver开发使用 支持E5、E37

    SECS Driver开发 1 简介 Secs Driver 由金南瓜科技提供,适用于半导体.光伏.面板.PCB等行业 支持C.C++.C#等编程语言(C#对应C#DLL库) SECS Driver集 ...

  5. oracle9i oci driver,Oracle连接 Oracle 的OCI Driver 和 Thin Driver的区别

    我是今天看到tomcat数据源的配置时,想起来这个问题,刚开始还不晓得thin是什么东西! database.url=jdbc:oracle:thin:angel/oracle@192.168.55. ...

  6. 安装 intel HAXM 模拟器加速器异常:Failed to configure driver: unknown error. Failed to open driver

    新版Android IDE开发工具Android stutdio ,打开android 模拟器特别慢,为解决该问题我们会先安装 Intel 加速器 HAXM  ,安装过程中可以会出现如下错误 &quo ...

  7. IDEA报错:Loading class `com.mysql.jdbc.Driver‘. This is deprecated. The new driver class is `com.mysql

    错误描述: Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj. ...

  8. Windows Phone开发(4):框架和页

    原文:Windows Phone开发(4):框架和页 在开如之前,我想更正一个小问题,之前我在第一篇文章中说,Visual Studio Express for Windows Phone的中文版没有 ...

  9. Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdb

    使用JDBC连接数据库时出现报错, 报错内容: Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver cl ...

最新文章

  1. 最简单的日历控件“星期几”变为“几”
  2. VisualStudio C++内存泄漏的检测方法(二)
  3. Spring原始注解开发-02
  4. Android Builder模式在开发中的应用
  5. 使用Nginx搭建图片服务器(windows7)
  6. tomcat内存溢出问题解决思路
  7. php基础教学笔记,php学习笔记:基础知识
  8. CPython 和IronPython的基准测试
  9. 当年要是早知道这4步框架,我就不会为数据管理发愁了
  10. 自动化集成:Docker容器入门简介
  11. Logstash配置语法
  12. python __call__或者说func()()的理解
  13. Python模拟智能开关设备MQTT接入阿里云物联网平台 - PyCharm paho.mqtt
  14. 005. C#发送邮件
  15. linux tomcat war解压吗,Tomcat 何时解压war包
  16. AD6.9原理图打印去除背景色
  17. 运行时读取PAK文件
  18. UiPath Robotic Enterprise Framework 学习笔记
  19. 织梦插件-全自动SEO织梦插件
  20. 手摸手教会你三次握手和四次挥手

热门文章

  1. java zk监听异步_zk事件的监听和处理2
  2. win10+tensorflow-gpu+pycharm+anaconda...的成功安装,顺利在spyder import tensorflow
  3. windows和Linux虚拟机或者云主机之间传输文件
  4. oracle重建索引对空间的使用,分析oracle索引空间使用情况,以及索引是否需要重建...
  5. php laravel 理解,程序员-说一下PHP框架Laravel,如何理解她的思想
  6. python文件读写到list_Python文件读写
  7. 建立ssh隧道_快速掌握 SSH 端口转发,助力远程工作
  8. 第一台电子计算机于1846年诞生,全国2010年1月高等教育自学考试计算机与网络技术基础试题.doc...
  9. java盘点系统_2020年度综合大盘点:火爆IT业的7大Java技术,任何一项都是“卧槽牛逼”!...
  10. win7关闭开机启动项_电脑开机非常慢?原来是有软件偷偷自启动,教你一招彻底关闭它们...