tiechui_lesson01_入口函数和卸载函数
主要讲解入口函数和卸载函数。
#include <ntifs.h>VOID
nothing(HANDLE ppid, HANDLE mypid, BOOLEAN bcreate)
{UNREFERENCED_PARAMETER(ppid);UNREFERENCED_PARAMETER(mypid);UNREFERENCED_PARAMETER(bcreate);DbgPrint("processNotify\n");
}VOID DriverUnload(IN PDRIVER_OBJECT DriverObject)
{UNREFERENCED_PARAMETER(DriverObject);//如果卸载清理的时候不做清理,那么系统会蓝屏(第二个参数设置为TRUE)PsSetCreateProcessNotifyRoutine(nothing, TRUE);DbgPrint("Unload\n");
}NTSTATUS
DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{DriverObject->DriverUnload = DriverUnload;PsSetCreateProcessNotifyRoutine(nothing, FALSE);DbgPrint("%wZ\n",RegistryPath);return 0;
}
PsSetCreateProcessNotifyRoutine
在安装驱动的时候注册了一个进程通知回调,在系统中有进程创建或者关闭的时候,调用回调函数。第一个参数为注册的回调函数,第二个是添加和删除回调的布尔值。
[in] NotifyRoutine指定调用方提供的进程创建回调例程的入口点。 请参阅 PCREATE_PROCESS_NOTIFY_ROUTINE。
[in] Remove指示是否应从系统的通知例程列表中添加或删除 NotifyRoutine 指定的例程。 如果 为 FALSE,则指定例程将添加到列表中。 如果 为 TRUE,则从列表中删除指定的例程。
有一种蓝屏(BSOD)的情况,如果在卸载函数中没有设置删除设置个进程通知回调函数nothing,那么就会产生BSOD。因为操作系统中保有这个回调指针后,我们卸载掉驱动,那么这个指针所指的函数就不存在了,而操作系统仍然去试图访问这个函数那么就导致了蓝屏。所以需要在卸载驱动的时候调用:
PsSetCreateProcessNotifyRoutine(nothing, TRUE);
来将这个回调函数从操作系统删除掉,之后就不会蓝屏了。
相关文章:
tiechui_lesson01_入口函数和卸载函数
主要讲解入口函数和卸载函数。 #include <ntifs.h>VOID nothing(HANDLE ppid, HANDLE mypid, BOOLEAN bcreate) {UNREFERENCED_PARAMETER(ppid);UNREFERENCED_PARAMETER(mypid);UNREFERENCED_PARAMETER(bcreate);DbgPrint("processNotify\n"); }VOID DriverU…...
密码学【java】初探究加密方式之非对称加密
文章目录 非对称加密1 常见算法2 生成公钥和私钥3 私钥加密4 私钥加密 公钥解密5 公钥和私钥的保存和读取5.1 **保存公钥和私钥**5.2 读取公钥和私钥 非对称加密 非对称加密算法又称现代加密算法。非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。与对…...
网络安全和黑客技能:15本必读书籍推荐
前言 网络安全和黑客技能紧密相连。想要有效地防范黑客攻击,了解黑客的技能和思维方式非常重要。而要想成为一名合格的白帽黑客,也需要深入理解网络安全的基本原理和最佳实践。本文将介绍15本网络安全和黑客书籍,既包括了防范黑客攻击的指南…...
电话号码的字母组合
题目:17. 电话号码的字母组合 - 力扣(Leetcode) 思路: 给定一个电话号码字符串 digits,须输出它所能表示的所有字母组合。我们可以先定义一个数字字符到字母表的映射表 numToStr,然后再用 Combine 函数递归…...
PAT A1032 Sharing
1032 Sharing 分数 25 作者 CHEN, Yue 单位 浙江大学 To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the same sublist if they share the same suffix. For example, l…...
Git常见问题汇总
问题:Your branch is ahead of ‘origin/master’ by 1 commit 原因:你的本地分支高于远程仓库一次提交, 同步更新下,执行命令: git push origin master问题:warning: LF will be replaced by CRLF in main.lua The …...
设计模式之代理模式(静态代理动态代理)
目录 1、什么是代理模式 2、代理模式的结构 3、代理模式的实现 3.1 静态代理和动态代理概念 3.2 静态代理 3.3 动态搭理 3.3.1 代码实现 3.3.2 Proxy类讲解 4、动态代理VS静态代理 5、代理模式优缺点 1、什么是代理模式 由于某些原因需要给某对象提供一个代理以控制对…...
Java并发编程基础知识概述
前言 在现代计算机系统和服务器中,多线程并行执行已经成为常态,而且并发编程能够充分利用系统资源,提高程序处理效率和质量。因此,Java并发编程是Java程序员必须掌握的重要技能之一。 线程和进程 在操作系统中,进程是…...
Redis超详细入门手册教程!还不快来看看?
地址: RedisRedis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures …https://redis.io/ 1:NoSQL简介 1.1:数据库应用的演变历程 单…...
代码随想录算法训练营第四十九天| 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II
文章目录 121. 买卖股票的最佳时机122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 为什么定义dp数组为二维数组? dp数组定义,dp(i)[0] 表示第i天持有股票所得最多现金,dp(i)[1]表示第i天不持有股票的状态(未必当前卖出&#x…...
零基础如何学习挖漏洞?看这篇就够了【网络安全】
前言 有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了安全防护水平。 也有很多小…...
Twitter 推荐算法底有多牛? 已斩获11.7K star
点击上方“Github中文社区”,关注 看Github,每天提升第070期分享 ,作者:Huber | Github中文社区 大家好,我是Huber。 在美国当地时间 3 月 31 日,马斯克履行当初的诺言,他宣布了 Twitter 算法的…...
看过这篇文章,读懂数据分析
一、为什么需要数据分析 数据分析的重要性不言而喻,没有数据,就是感性。数据不会被观点打败,数据只能被数据打败。我们现在妥妥地已经进入了数据时代。 量化IT投资成效,以数据驱动决策 站在公司或者决策者角度,数据最…...
[计算机图形学]光场,颜色与感知(前瞻预习/复习回顾)
一、Light Field / Lumigraph—光场 1.我们看到的是什么 我们的眼睛能够把3D世界转换为2D的成像信号被我们感知,如上面第一幅图,这就是我们看到整个世界的过程,那么如果我们把之前记录的光的信息都完美的放在一个幕布上,那么我们…...
L4公司进军辅助驾驶,放话无图也能跑遍中国
作者 | Amy 编辑 | 德新 高阶智能驾驶走向规模量产,高精地图成为关键的门槛之一。今年,多家车企和智驾公司都喊出「不依赖高精地图,快速大规模落地」的口号。 华为、小鹏、元戎以及毫末等,可能是最快在国内量产 无高精图智…...
【Java笔试强训 17】
🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥杨辉三角…...
【IPv6】基本概念及字段
IPV4知识点: 字段值 IPv4字段共 字段值解释Version版本版本字段,可以区分V4和V6版本,V4是0100,V6是0110,需要注意的是V4和V6头部除了版本字段位置相同外,其他都是不一样的,因此两个协议不能直…...
数据库中的 Schema 变更实现
线上沙龙-技术流第 30 期营业啦 05月09日(周二)19:30 KaiwuDB - B站直播间 传统数据库操作 Schema 变更时,第一步便是锁表,需持续到 Schema 变更操作完成。这样的做法虽然实现简单,无需考虑事务并发带来的影响&#…...
【C++ 学习 ②】- 类和对象(上)
目录 一、 面向对象的基本理念 1.1 - 什么是对象? 1.2 - 类和对象 1.3 - 面向对象的五条原则 1.4 - 面向过程 vs 面向对象 二、C 中的结构体 三、类的定义 3.1 - 类的两种定义方式 3.2 - 成员变量的命名规范 四、类的访问限定符和封装 4.1 - 访问限定符 …...
最好的物联网教程:软硬结合——从零打造物联网
在大学里不同专业有着不同的追求:机械类与强电类专业学生追求的是 “机电合一” ,既懂机械又懂电气,整个电气机械自动化便能打通。弱电类专业学生追求的是 “软硬结合” ,既懂硬件又懂软件,整个电子产品便能打通。我作…...
机箱机柜模块化设计方法
在机箱机柜制造领域,模块化设计正逐渐成为提升生产效率、降低成本、增强产品灵活性的关键方法。今天,我们就来深入探讨机箱机柜模块化设计方法,同时为大家推荐深圳市机汇五金制品有限公司(以下简称“机汇五金”)&#…...
从JLink驱动安装失败,聊聊老旧Win7系统下嵌入式工具链的“版本锁定”现象
从JLink驱动安装失败看嵌入式工具链的版本锁定困境 当你在Windows 7系统上尝试安装最新版JLink驱动时,那个顽固的黄色感叹号是否曾让你抓狂?这看似简单的驱动问题背后,隐藏着一个困扰嵌入式开发领域多年的系统性难题——工具链的版本锁定现象…...
xhs签名验证机制详解:如何绕过小红书反爬虫系统的终极指南
xhs签名验证机制详解:如何绕过小红书反爬虫系统的终极指南 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 在小红书数据爬取领域,xhs签名验证机制是开…...
别再复制粘贴了!用LabVIEW 2023实现TCP/IP通讯的保姆级教程(附完整DEMO下载)
LabVIEW 2023 TCP/IP通讯实战:从原理到健壮性设计的深度解析 在工业自动化与测试测量领域,稳定可靠的通讯系统如同设备的神经系统。许多LabVIEW开发者虽然能够通过复制粘贴完成基础通讯功能,却在真实项目中频繁遭遇数据丢失、连接不稳定等&qu…...
网易云音乐NCM格式转换终极指南:ncmdumpGUI轻松解锁你的音乐自由
网易云音乐NCM格式转换终极指南:ncmdumpGUI轻松解锁你的音乐自由 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否遇到过这样的困扰ÿ…...
18.地下室的服务器
六月第一个周末的深夜,暴雨如注。陈远坐在书桌前,屏幕上是花花绿绿的监控图表,代表着他那台二手服务器资源使用率的曲线,正像垂死病人的心电图一样剧烈地上下跳动。CPU占用率长时间维持在90%以上,内存也逼近红线。这已…...
西门子博图V17变量导入昆仑通态MCGS Pro的保姆级避坑指南(含DB块偏移量设置)
西门子博图V17与MCGS Pro高效数据对接实战指南 在工业自动化系统集成中,西门子TIA Portal(博图)与昆仑通态MCGS Pro触摸屏的数据交互是常见需求。许多工程师在变量导入环节频繁遭遇DB块偏移量异常、变量名截断、数据类型不匹配等"暗坑&q…...
AI编程助手高效协作:Cursor与Claude Code开发者工具箱实战指南
1. 项目概述:一个为AI编程时代量身定制的开发者工具箱如果你和我一样,日常开发已经从传统的IDE搜索引擎模式,逐渐转向与Cursor、Claude Code等AI编程助手深度协作,那你一定遇到过类似的痛点:每次开启一个新项目&#x…...
规范驱动开发:基于OpenAPI与LLM的现代API构建实践
1. 项目概述:一个基于规范驱动的现代API开发实践最近在GitHub上看到一个挺有意思的项目,叫izzymsft/spec-driven-dev-backend-apis,它是一个用FastAPI构建的客户管理后端REST API。这个项目本身的功能——客户和地址的CRUD操作,结…...
终极指南:如何用Chromatic快速掌握Chromium/V8通用修改器
终极指南:如何用Chromatic快速掌握Chromium/V8通用修改器 【免费下载链接】chromatic Universal modifier for Chromium/V8 | 广谱注入 Chromium/V8 的通用修改器 项目地址: https://gitcode.com/gh_mirrors/be/chromatic 想象一下,你正在开发一个…...
