文件服务器映驱动,映射驱动程序文件 - Windows drivers | Microsoft Docs

映射驱动程序文件

05/13/2020

本文内容

替换驱动程序文件可能会很困难。 通常,必须启动到 Microsoft Windows 安全生成,替换驱动程序二进制文件,然后重新启动。

使用映射文件存在替代方法。 您可以使用此映射方法替换任何内核模式驱动程序 (包括显示驱动程序) 、任何 Windows 子系统驱动程序或任何其他内核模式模块。 为简单起见,在本主题中,这些文件称为 " 驱动程序 ",即使您可以对任何内核模式模块使用此方法也是如此。

无论何时将 WinDbg 或 KD 附加为内核调试器,都可以使用此方法。 你还可以在启动驱动程序上使用此方法,但这会比较困难。 有关如何将此方法用于启动驱动程序的详细信息,请参阅替换启动驱动程序。

若要使用驱动程序替换图来替换驱动程序文件,请执行以下操作:

创建 驱动程序替换映射文件。 此文件是一个文本文件,其中列出了目标计算机上的驱动程序及其在主计算机上的替换驱动程序。 可以替换任意数量的驱动程序。 例如,你可能会在 \ 包含以下信息的主计算机的 d: Map Files 目录中创建名为 Mymap.ini 的文件 _ 。

map

\Systemroot\system32\drivers\videoprt.sys

\\myserver\myshare\new_drivers\videoprt.sys

有关此文件的语法的详细信息,请参阅驱动程序替换映射文件格式。

设置与目标计算机的内核调试连接,并在主计算机上 (KD 或 WinDbg) 启动内核调试器。 (不必实际中断目标计算机。 )

通过执行以下操作之一加载驱动程序替换映射文件:

_ _ 启动内核调试器之前,请设置 NT KD _ FILES环境变量。

D:\Debugging Tools for Windows> set _NT_KD_FILES=d:\Map_Files\mymap.ini

D:\Debugging Tools for Windows> kd

D:\Debugging Tools for Windows> kd

kd> .kdfiles d:\Map_Files\mymap.ini

KD file associations loaded from 'd:\Map_Files\mymap.ini'

你还可以使用 kdfiles 命令来显示当前的驱动程序替换映射文件或删除驱动程序替换图。 如果不使用此命令,映射将一直存在,直到退出调试器。

完成此过程之后,驱动程序替换映射会生效。

只要目标计算机要加载驱动程序,它就会查询内核调试器,以确定是否已映射此驱动程序。 如果已映射该驱动程序,则会通过内核连接发送替换文件,并通过旧的驱动程序文件对其进行复制。 然后,将加载新的驱动程序。

驱动程序替换映射文件格式

驱动程序替换映射文件中的每个驱动程序文件替换均由三行表示。

第一行包含 "map" 一词。

第二行指定目标计算机上旧驱动程序的路径和文件名。

第三行指定新驱动程序的完整路径。 此驱动程序可以位于主计算机上,也可以位于其他某个服务器上。

您可以任意多次重复此信息模式。

路径和文件名不区分大小写,实际驱动程序文件名可能不同。 当目标计算机将要加载该驱动程序时,将在第三行中指定的文件复制到第二行中指定的文件。

Kdfiles 将尝试将存储在服务控制管理器 (SCM) 数据库中的文件名匹配。 SCM 数据库中的名称与传递给 MmLoadSystemImage 的名称相同。

在 Windows 10 和更高版本的调试工具中,驱动程序映射可用于动态匹配驱动程序名称并确定正确的路径。 无需指定完整路径,并且文件扩展名是可选的。 您可以使用这些项中的任意项来匹配 NT 文件系统驱动程序。

ntfs

NTFS

ntfs.sys

windows \ system32 \ 驱动程序 \ntfs.sys

您可以使用这些项中的任意项来匹配 NT 内核驱动程序。

ntoskrnl.exe

NTOSKRNL.EXE

ntoskrnl.sys

windows \ system32 \ 驱动程序 \ntoskrnl.sys

地图文件可以包含空行,并可以包含以数字符号开头的注释行 (#) 。 但是,在文件中出现 "map" 后,接下来的两行必须是旧驱动程序和新驱动程序。 空行和注释行不能分解三行地图块。

下面的示例演示了驱动程序替换映射文件。

# Use the # for comments like this one

map

\Systemroot\system32\drivers\videoprt.sys

e:\MyNewDriver\binaries\videoprt.sys

map

\Systemroot\system32\mydriver.sys

\\myserver\myshare\new_drivers\mydriver0031.sys

# This is replacing a beep driver

map

\??\c:\windows\system32\beep.sys

\\myserver\myshare\new_drivers\new_beep.sys

驱动程序替换映射文件必须是文本文件,但您可以使用任何文件名和文件扩展名 ( .ini、.txt、.map 等) 。

其他说明

出现驱动程序替换时,内核调试器中会出现一条消息。

如果在 KD 中使用 ctrl + D () 或在 WinDbg) 中按 CTRL + ALT + d (,则会看到有关替换请求的详细信息。 如果你不确定列出的名称是否与 SCM 数据库中的名称匹配,则此信息会很有用。

可以启用 bcdedit bootdebug 选项,以查看可用于替换内核、hal 或启动驱动程序的早期启动信息。

bcdedit -bootdebug on

如果内核调试器退出,则不会再进行驱动程序替换。 但是,已替换的任何驱动程序都不会还原为其旧的二进制文件,因为驱动程序文件实际上被覆盖。

此驱动程序替换功能会自动绕过 Windows 文件保护 (WFP) 。

您无需重新启动目标计算机。 无论目标计算机是否已重启,都将在目标计算机加载驱动程序时进行替换。 当然,大多数驱动程序都是在启动过程中加载的,因此,在此过程中,在加载映射文件后,应该重启目标计算机。

如果 _ 定义了 NT _ KD _ FILES 变量,则启动内核调试器时,将读取指定的驱动程序替换映射文件。 如果发出 kdfiles 命令,则会立即读取指定的文件。 此时,调试器将验证该文件是否具有基本的映射/行/行格式。 但在发生替换之前,不会验证实际路径和文件名。

读取映射文件后,调试器将存储其内容。 如果在此之后更改此文件,则所做的更改不会 (,除非重新发出 kdfiles 命令) 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA设计模式——概述

**设计模式(Design pattern)**是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。项目中合理地运用设计模式可以完美地解决很多问题。 设计模式的六大原则…

yb3防爆电机型号含义_yb3防爆电机型号含义有哪些?

YB3防爆电机型号中包含了这个系列电机的一些相对信息,每个电机都有其型号系列,将它们的功用功能规格参数进行相应的分隔,防爆电机的的型号系列也可以说是防爆电机的技能综合证,防爆电机有了它的型号系列更能找到它的适用场所。YB3系列的防爆电机的系列含义如下YB3系列防爆电机是…

网站服务器怎么用手机登录不了怎么办,怎么打不开服务器列表了?

2011-04-19网页图片打不开是不是中毒呢?以前网页中没有图片、视频、动画、声音。打开IE选工具/Internet选项/高级/在设置的下拉列表,勾选“播放网页中的动画”“播放网页中的声音”“播放网页中的视频”“显示图片”(也可以直接选择高级中下面的“还原默…

RedisTemplate常用集合使用说明(一)

在这里我使用的是spring-boot框架组合的redisTemplate的jar包spring-boot-starter-data-redis&#xff0c;采用POM的方式引入&#xff0c;引入代码如下: <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent…

idea调试怎么跳出循环_IDEA调试技巧条件断点实现步骤详解

调试的时候&#xff0c;在循环里增加条件判断&#xff0c;可以极大的提高效率&#xff0c;心情也能愉悦。以下介绍下IDEA使用条件【Condition】断点的方法1、编写一段样例代码/*** author jiashubing* since 2017/11/13*/public class Test {public static void main(String[] …

RedisTemplate常用集合使用说明-opsForValue(二)

​ 基础配置介绍已经在前面的《RedisTemplate常用集合使用说明(一)》中已经介绍了&#xff0c;现在我们直接介绍opsForValue()方法的使用&#xff1a; 1、set(K key, V value) ​ 新增一个字符串类型的值,key是键&#xff0c;value是值。 redisTemplate.opsForValue().set(&…

ur机械臂 控制器_OnRobot末端执行器和统一接口已通过UR +计划认证

近日&#xff0c;OnRobot 宣布其One System Solution末端执行器和统一接口现已通过UR 计划认证&#xff0c;UR 计划对夹具等配件进行测试和认证&#xff0c;以便与Universal Robots A / S协作机器人手臂无缝配合使用。OnRobot在9月份发布了全系列的机械手和传感器&#xff0c;具…

xp系统打印机服务器设置,WinXP打印机纸张规格设置的方法

电脑的打印机是我们常常会使用的外部输出设备&#xff0c;虽说经常在用&#xff0c;但是关于它的很多问题还是不会&#xff0c;比如说怎么对打印机纸张规格设置&#xff0c;那么当你遇到这个问题不会的话&#xff0c;那就赶紧看看小编整理的WinXP打印机纸张规格设置的方法吧&am…

RedisTemplate常用集合使用说明-opsForList(三)

​ 基础配置介绍已经在前面的《RedisTemplate常用集合使用说明(一)》中已经介绍了&#xff0c;现在我们直接介绍opsForList()方法的使用&#xff1a; 1、leftPush(K key, V value) 在变量左边添加元素值。 redisTemplate.opsForList().leftPush("list","a&qu…

stm32的语音识别_基于stm32循迹避障语音控制金属探测蓝牙小车设计(原理图+pcb+源码+参考文档)...

功能描述及设计原理&#xff1a;小车具有检测里程功能&#xff0c;在金属探测模式&#xff0c;槽型光耦会检测小车车轮的圈数&#xff0c;以此来计算小车行走的里程&#xff0c;并可以通过OLED屏幕显示出来。还可以显示小车的工作模式以及小车距离前方障碍物的距离。》默认模式…

虚拟磁盘没有可用的合格服务器,VMware提示:没有更多空间可供虚拟磁盘***.vmdk使用 所引发的故障及处理...

Python - - - Pandas基本使用import pandas as pdimport numpy as npdef pandasWork1(): # DataFrame 初始化&#xff0c;与数据的获取one np.array([name0, name1, name2, name3, name4, name5])two list([[...Browser-sync安装与使用browser-sync启动命令Browsersync能让浏…

RedisTemplate常用集合使用说明-opsForHash(四)

基础配置介绍已经在前面的《RedisTemplate常用集合使用说明(一)》中已经介绍了&#xff0c;现在我们直接介绍opsForHash()方法的使用&#xff1a; 1、put(H key, HK hashKey, HV value) 新增hashMap值。 redisTemplate.opsForHash().put("hashValue","map1&q…

发明喂饭机器人_人类又懒出新高度,老美发明自动喂饭机器人,“君子”动嘴不动手...

近年来&#xff0c;各式各样的智能机器人层出不穷&#xff0c;多数都是为了方便人们的日常生活。近日&#xff0c;美国一机器人公司&#xff0c;为残障人士和重症疾病患者设计了一款智能喂饭机器人&#xff1a;Obi。这款机器人拥有全白的外观&#xff0c;它的机械臂可以将饭菜直…

RedisTemplate常用集合使用说明-opsForSet(五)

基础配置介绍已经在前面的《RedisTemplate常用集合使用说明(一)》中已经介绍了&#xff0c;现在我们直接介绍opsForSet()方法的使用&#xff1a; 1、add(K key, V… values) 向变量中批量添加值。 redisTemplate.opsForSet().add("setValue","A","…

中provide的用法_Vue中那些你不知道的作用域

作用域控制可以使用哪些变量以及在何处使用。它控制它们对应用程序的不同部分的“可见性”。了解 Vue 提供的作用域级别之间的差异会帮助我们编写更清晰的代码。下面是 vue 中4个级别的作用域&#xff1a;全局作用域子树作用域组件作用域实例作用域全局作用域Vue 应用程序中的全…

RedisTemplate常用集合使用说明-opsForZSet(六)

基础配置介绍已经在前面的《RedisTemplate常用集合使用说明(一)]》中已经介绍了&#xff0c;现在我们直接介绍opsForZSet()方法的使用&#xff1a; 1、add(K key, V value, double score) 添加元素到变量中同时指定元素的分值。 redisTemplate.opsForZSet().add("zSetV…

树叶贴画机器人_洪山广场举办“落叶节”,树叶树枝拼贴出冬日风景

楚天都市报11月30日讯(记者卢成汉 通讯员谢助全 彭雪琴)秋天飘落的树叶树枝&#xff0c;经过拼贴&#xff0c;变成了有趣的图案。29日&#xff0c;洪山广场举行的“落叶节”上&#xff0c;小学生们的树叶作品&#xff0c;拼贴成冬日的风景。当天&#xff0c;小学生们将在洪山广…

Java volatile关键字最全总结:原理剖析与实例讲解(简单易懂)

文章目录一、简介二、并发编程的3个基本概念1.原子性2.可见性3.有序性三、锁的互斥和可见性四、Java的内存模型JMM以及共享变量的可见性五、volatile变量的特性1.保证可见性&#xff0c;不保证原子性2.禁止指令重排六、volatile不适用的场景1.volatile不适合复合操作2.解决方法…

云服务器如何链接本地打印机_利用FileZilla搭建云服务器FTP服务端和本地客户端...

腾讯云服务器&#xff08;服务端&#xff09;本地计算机&#xff08;客户端&#xff09;1.首先在腾讯云上下载好FileZilla的对应服务端版本这里附上中文下载地址下载 - FileZilla中文网​www.filezilla.cn2.下载安装完成后打开默认下一步就好3.然后点击这个小头像进行账户设置首…

多线程之CAS与synchronized的比较

业务场景&#xff1a;需要实现一个支持并发的计数功能 1、计数功能的基本实现是&#xff1a; public class Increment{private int count 0;public void add(){ count; }}2、以上实现在并发环境下是不安全的&#xff0c;故修改方案1是加锁synchronized&#xff1a; publi…