Windows 如何更改或插入物理扇区到另一个文件中?

2024-03-03

我有 20 个文件,其中数据结构在 NTFS 中与 4k 扇区对齐。我想合并所有文件无需复制任何数据。 目标是编写一种通过直接更改 NTFS 虚拟集群和物理集群来工作的插入 API。

目标是从 50GB 块中获得大小为 1TB 的文件,而无需复制。所有数据都已位于磁盘上且位于同一卷上。 这可以通过直接在文件内设置 NTFS 逻辑簇来实现。

我可以使用以下命令读取文件的虚拟到物理翻译FSCTL_GET_RETRIEVAL_POINTERS

来源:VCN:0 集群:16 LCN:54723798

目标:VCN:0 集群:160 LCN:6172145

我尝试使用 Windows Defrag API:

bool fResult = DeviceIoControl(
                hVol,
                FSCTL_MOVE_FILE,
                p,
                bufSize,
                NULL, 
                0,
                ref size,
                NULL);

虽然这将是完美的命令,但它无法将源文件的物理地址更改为目标文件的物理地址:STATUS_ACCESS_DENIED。如果我删除目标文件,我可以移动物理集群,但目标文件消失了。

NTFS 硬链接很好,但我无法创建到另一个文件的一部分的硬链接。

我在 Windows 计算机上拥有管理员权限,我需要在文件系统级别执行此操作,而不是使用 Windows 文件 API 以避免任何复制。解决方案是通过直接写入 NTFS 主文件表来更改簇。

或者通过删除大文件,将 20 个文件的所有逻辑扇区更改为已删除的文件扇区,然后使用特定的已存在扇区创建一个文件。


一个可行的解决方案将产生以下结果:

来源 1:VCN:0 集群:16 LCN:54723798

来源 2:VCN:0 集群:16 LCN:6172145

Target:

扩展2:

VCN:0 集群:16 LCN:54723798

VCN:16 集群:16 LCN:6172145


要验证更改,您可以以管理员身份运行 cmd windows:

fsutil 卷文件布局“C:\Data\BigFile.txt”

欢迎任何其他想法或一些 C++/C 代码来更改或插入 MFT 条目。

更新 1:我可以读取 NTFS 分区的 MFT,但我确实需要知道如何创建或编辑文件条目的人。也欢迎其他解决方案


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 如何更改或插入物理扇区到另一个文件中? 的相关文章

  • 用 C 语言制作查找表的最佳方法是什么?

    我正在开发一个嵌入式 C 项目 我有一个 LCD 显示屏 每个字符都有一个 5x7 点阵 要显示特定字符 您必须移动与要打开的点相关的 5 个字节 所以我需要制作某种带有键的查找表 我可以在其中传递 ASCII 字符 并返回一个 5 字节的
  • 为什么 strcat() 之后字符串会被改变?

    这是源代码 int main char str dance char str1 hello char str2 abcd strcat str1 str2 printf s str output bcd why str更改后strcat s
  • nUnit Assert.That(method,Throws.Exception) 不捕获异常

    有人可以告诉我为什么这个检查异常的单元测试失败了 显然我真正的测试是检查其他代码 但我使用 Int32 Parse 来显示问题 Test public void MyTest Assert That Int32 Parse abc Thro
  • 在 C# 中,为什么从列表创建 HashSet 比从 HashSet 开始更快?

    我有一个方法 它采用上限 并返回达到该限制的素数列表 public static List
  • lua_resume 的 from 参数的含义

    From Lua 5 2 参考手册 http www lua org manual 5 2 manual html lua resume int lua resume lua State L lua State from int nargs
  • 如果文本框不为空,如何添加并显示工具提示文本框 WPF

    需要显示提示 其中包含文本字段中的数据 文本框有数据时出现提示 只需使用绑定到 ToolTipService 附加属性即可 XAML
  • 使用 Xlib 捕获鼠标

    我想编写一个简单的 Xlib 程序来改变鼠标行为 举个例子 反转垂直移动 我在捕获事件时遇到问题 我想要代码 捕获控制器位置的变化 我向上移动鼠标 MotionEvent 计算新的光标位置 new x difference x 设置新的光标
  • C# - 获取 GPU 的总使用百分比

    我正在向我的程序添加一些新功能 这些功能当前通过串行连接将 CPU 使用情况和 RAM 使用情况发送到 Arduino 请参阅this https create arduino cc projecthub thesahilsaluja cp
  • Windows 消息

    我需要发送带有自定义 ID 的自定义 Windows 消息 其他应用程序将侦听该消息 Windows 是否为内部消息保留任何预定义的消息 ID 范围 如 SQL Server 那样 内部消息最多为 50 000 The 文档 https m
  • FormsAuthentication.SetAuthCookie() 是否需要重定向?

    检查用户的凭据并确认其良好后 我正在使用FormsAuthentication SetAuthCookie Username false 对用户进行身份验证 然后在母版页中我使用Page User Identity IsAuthentica
  • 不区分大小写“包含(字符串)”

    有没有办法让下面的返回为真 string title ASTRINGTOTEST title Contains string 似乎没有过载允许我设置区分大小写 目前我将它们都大写 但这很愚蠢 我指的是i18n http en wikiped
  • 缓冲区溢出(与)缓冲区溢出(与)堆栈溢出[重复]

    这个问题在这里已经有答案了 可能的重复 堆栈溢出和缓冲区溢出有什么区别 https stackoverflow com questions 1120575 what is the difference between a stack ove
  • 如何在 C# 中获取包含表情符号的字符串的正确长度

    The 英语国旗表情符号 https emojipedia org flag for england 由 14 个字节的数据组成 组合后将呈现一个字符 如果我有如下所示的代码 var test ud83c udff4 udb40 udc67
  • 正确重载 stringbuf 以替换 MATLAB mex 文件中的 cout

    MathWorks 目前不允许您使用cout当 MATLAB 桌面打开时 从 mex 文件中读取 因为它们已重定向 stdout 他们当前的解决方法是提供一个函数 mexPrintf 他们要求你改用 http www mathworks c
  • 将对象转换为泛型类型

    我已经有一段时间没有睡觉了 所以这可能比我想象的要容易 我有一个通用类或多或少是这样的 public class Reference
  • Plink 通过 C# 返回不需要的字符

    通过 C 使用 Plink 时 我在结果前后收到不需要的字符 Command ls l informatica tgtdynamicparams out grep vaulttest grep Sep 1 awk print 9 sort
  • 引用计数类和多线程

    我是多线程编程的新手 对此我仍然感到困惑 下面是我的引用计数类 class Rbuffer private char m pnData volatile unsigned int mRefCount public Rbuffer int n
  • ASP.Net Core 中没有智能感知

    通过 Visual Studio 安装 ASP Net Core gt 新项目 gt Web gt ASP Net Web 应用程序 gt 确定 gt ASP Net 5 模板 安装后重新启动系统 然后创建一个新项目ASP NET 5 Te
  • 将 tiff 像素长宽比更改为正方形

    我正在尝试对多页 tiff 文件执行条形码识别 但是 tiff 文件是从传真服务器 我无法控制 发送给我的 该服务器以非方形像素长宽比保存 tiff 这导致图像由于纵横比而被严重挤压 我需要将 tiff 转换为方形像素长宽比 但不知道如何在
  • 生成唯一随机数的智能方法

    我想生成 00000001 到 99999999 范围内的唯一随机数序列 所以第一个可能是 00001010 第二个可能是 40002928 等等 最简单的方法是生成一个随机数并将其存储在数据库中 下次再执行一次并检查数据库中该数字是否已存

随机推荐

  • 我如何向 Activemq 发送消息

    我从来不工作JMS 最近我下载了Activemq并更改端口号61616 to 61617 in all conf activemq xml文件 我从命令提示符运行以下命令并在浏览器上打开控制台页面 C Users Infratab Bang
  • 如何自动缩放一组控件的字体大小?

    我在 WPF 网格中有一些 TextBlock 我想根据它们的可用宽度 高度进行缩放 当我搜索自动缩放字体大小时 典型的建议是将 TextBlock 放入 ViewBox 中 所以我这样做了
  • Android MediaRecorder API 不断裁剪视频比特率

    我使用 MediaRecorder API 一段时间了 我以为所有问题都已经过去了 但我想我错了 我正在使用 MediaRecorder API 将视频录制到文件中 当我使用高质量的 setProfile 时 我得到了良好的质量 但是当我尝
  • 如何在 React Native 中拉伸静态图像作为背景?

    我想在我的 React Native 应用程序中使用背景图像 图像比屏幕小 所以我必须拉伸它 但如果图像是这样 它就不起作用从资源包加载 var styles StyleSheet create bgImage flex 1 flexDir
  • 使用 MediaWiki 从 Wikia 页面提取文本,但返回结果一片混乱,是否有更好的方法可以从每个部分提取文本?

    我正在开发一个 Android 应用程序 它从 Wikia 页面提取信息并将其显示在应用程序中 我目前正在拉动所有类别进行导航 并将我的应用程序设置为在 WebView 中显示页面 但我只想拉动信息并自行格式化 而不是通过传递到 WebVi
  • android:如何在字符串中添加下划线

  • 按组计算值之间的差异并匹配时间

    对于每只鸟 我想计算不同日期的平均每小时体温 Tb 测量值 Tb Periods 之间的差异 我的目标是能够比较 BirdX 从 0900 PreI 到 09 00 DayI 10 00 PreI 到 10 00 PostI 等的 Tb 变
  • 如何在 POST 期间获取不同资源的 JAX-RS @Path?

    我有两个用于涉及用户资源的简单 Web 服务 Jersey 和 GlassFish 的 REST 类 一个对所有用户进行操作 例如 POSTing 的工厂 另一个对单个用户进行操作 例如 GET PUT 删除 他们位于 Stateless
  • 在sql server中使用case语句更新多列

    我想使用 case 语句更新表 查询是这样的 select case columnname when name1 then begin update table set pay1 pay1 100 pay2 pay2 20 pay3 pa
  • .Net Core 无法使用位图

    我正在使用 Net Core 2 1 开发 Web 服务 我有一个字节数组 其中包含所有像素值 灰度 宽度 高度 我想从这些参数创建一个位图 这是我的代码 来自一个正在运行的 Net Framework 4 项目 public FileRe
  • CollapsingToolbarLayout 未正确调用 requestLayout()

    我有一个折叠的工具栏布局 其中包含图像 折叠时显示工具栏标题 我需要更改工具栏标题字体 因此我在工具栏布局中添加了一个文本视图 现在 每当我折叠工具栏时 都会重复生成以下错误 08 12 13 14 19 604 2263 2263 com
  • 什么时候应该从类方法返回对对象的引用

    从类方法返回引用的最佳实践是什么 是否希望在没有引用的情况下返回基本类型 而希望通过引用返回类对象 您推荐的任何文章 最佳实践文章 我假设你所说的类方法是指成员函数 通过引用返回 的意思是 返回对成员数据的引用 这主要与返回对 local
  • Coq 中的“错误:宇宙不一致”是什么意思?

    我正在努力通过软件基础 http www cis upenn edu bcpierce sf current 目前正在做教堂数字的练习 这是自然数的类型签名 Definition nat forall X Type X gt X gt X
  • Google Finance,如何获取 JSON 数据流?

    我之前试图解释这一点 但显然失败了 因此 如果您打开了谷歌金融图表 例如 http www google com finance q INDEXNASDAQ IXIC http www google com finance q INDEXN
  • 将 HTTP 响应正文解析为 XML

    我使用此代码执行 HTTP 请求并解析 XML 响应 using HttpWebResponse resp req GetResponse as HttpWebResponse if resp StatusCode HttpStatusCo
  • R中基于移动时间窗口连接数据

    我有每小时记录一次的天气数据 以及每 4 小时记录一次的位置数据 X Y 我想知道 X Y 位置的温度是多少 天气数据并不完全相同 因此 我为每个位置编写了这个循环 以扫描天气数据 查找日期 时间中的 最接近 并提取该时间的数据 问题是我编
  • prolog 如何使用 succ 运行递归查询?

    有人可以向我解释一下为什么这个序言查询会这样工作吗 定义是 add 0 Y Y add succ X Y succ Z add X Y Z 鉴于这种 add succ succ succ 0 succ succ 0 R 这是查询的轨迹 Ca
  • 如何根据数据属性内对象的属性选择元素?

    如果我的标记如下所示 div div div div div div 如果我只有键 bar 或 foo 我将如何使用 JQuery 选择特定元素 我可以取出每一行的整个对象并迭代它以查找匹配项 但如果有更有
  • Pdfplumber 无法识别表 python [重复]

    这个问题在这里已经有答案了 我使用 Pdfplumber 提取第 2 页第 3 部分的表格 通常 但它只适用于某些 pdf 其他则不起作用 对于失败的 pdf 文件 似乎 Pdfplumber 读取的是按钮表而不是我想要的表 我怎样才能拿到
  • Windows 如何更改或插入物理扇区到另一个文件中?

    我有 20 个文件 其中数据结构在 NTFS 中与 4k 扇区对齐 我想合并所有文件无需复制任何数据 目标是编写一种通过直接更改 NTFS 虚拟集群和物理集群来工作的插入 API 目标是从 50GB 块中获得大小为 1TB 的文件 而无需复