问题标签 [sector]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 为什么将原始字节写入分区不起作用[扇区写入]?
我有一个 USB 密钥,我想直接写入它的第一个扇区,但它根本不起作用。我试图为此编写一个跨平台(BSD/Linux/Windows)代码(下面的代码),但它什么也没做:
因为它不起作用,我想至少我会尝试使用 posix 函数的平台特定代码,如下所示:
它也没有工作。我不得不提一下,我在 FreeBSD 上以 sudo 的身份尝试了这两个代码,在 Windows 上以管理员身份尝试了第一个代码 因为我知道,从我发现的另一个代码中,我需要权限才能运行这个东西。
如上所述,我发现另一个代码几乎可以满足我的需求,但它位于 WIN API C++ 中(C++ 使用一些 Windows 特定指令)。不幸的是,它不仅不是跨平台的,而且我对 WIN API C++ 的了解还不够,无法制作它的跨平台 C 版本或更改它,而不是填充整个扇区或更多扇区,而是从源文件中复制足够多的内容,我想要复制到目标扇区。
[编辑]
当我在 FreeBSD 上运行我的程序时,我使用命令sudo ./copier source.bin /dev/da0s1
436,它运行时没有告诉我发生任何错误,对于 Windows,我copier.exe e:\source.bin \\.\N:
在管理员 cmd 中使用命令(N:作为分区 N),我得到“权限被拒绝”
此外,我刚刚添加了更多指令以了解读取和写入的字节数:
我使用上述命令读取了 436 个字节并写入了 -1 个字节。至少在posix代码上。跨平台代码告诉我写入了 436 个字节,但是当我检查分区的十六进制原始数据时;什么也没有变。
正如 Erdal Küçük 所建议的,我添加了以下指令以在写入后获取错误消息:
在 Posix 代码中:
在 ANSI C 代码中:
当我在 FreeBSD 上运行 POSIX 代码时,我收到一条错误消息
无法写入文件 /dev/da0s1:参数无效
当我在 FreeBSD 上运行跨平台代码时;错误消息根本没有出现。在 Windows 上,跨平台代码给了我一个奇怪的错误信息:
无法写入文件 \\.\N: : 没有错误
基本上它不能写但errno
不是错误?
Windows 告诉我 0 字节在哪里写入。
windows - LogicalBytesPerSector 与 PhysicalBytesPerSector
当我执行命令fsutil fsinfo sectorInfo c:
时,我会收到以下输出:
我担心LogicalBytesPerSector
和之间的区别PhysicalBytesPerSectorForAtomicity
。
由于LogicalBytesPerSector
小于PhysicalBytesPerSectorForAtomicity
,我写的每个 512 字节块实际上会被原子写入吗?另一方面,我写的每一个 4096 字节的块实际上会被原子地写入吗?
另外,512字节的读/写会不会很慢,好像我理解得很好,系统需要读取4096个物理字节才能写入我的512字节?
vhd - VHD 为什么根据我是使用 gwi win32_diskdrive 还是使用磁盘映像工具得到不同的扇区计数结果?
我确信对此有一个非常明显的答案,但我自己无法解决。我在 Windows 10 磁盘管理工具中创建了一个 1GB VHD。我使用 powershell 列出了带有 gwim win32_diskdrive 的驱动器的详细信息,并得到以下结果:
然后,我使用映像工具对附加的 VHD 进行映像,并获得 2097152 的扇区数。有人能解释一下这里发生了什么吗?我假设映像工具正在对“物理”磁盘进行映像,而 gwim win32_diskdrive 正在显示逻辑磁盘的结果?如果是这种情况,有什么方法可以让 powershell 报告 VHD“物理”磁盘的结果?
我希望这是有道理的。
任何帮助将不胜感激。
hard-drive - 从坏扇区硬盘恢复数据
我有一个 0% 健康的 2TB 硬盘,它包含很多坏扇区。当我将驱动器与 PC 连接时,它会显示其中的数据,但我无法复制或打开它,当我尝试这样做时,我的整个 PC 速度变慢,几分钟后硬盘驱动器与 PC 断开连接。有没有办法从硬盘恢复数据?谢谢
windows - 如何写入 SD 卡的引导扇区(在 Windows 中)?
现在这都是假设的,但我有兴趣提前计划。我一直在看 Ben Eater 的 6502 电脑视频,并购买了他的套件。即使我还没有组装它,我也有想法。我想把它变成一台功能强大的计算机,具有长期存储,我不必通过 EEPROM 写入器进行编程,最终我希望能够在机器上为机器编写程序集。这当然需要一个操作系统,虽然汇编程序和键盘处理程序可以安装在 EEPROM 上,但没有办法保存程序以供以后运行。所以我需要大容量存储,以及从中读取/写入和存储文件的方法。
Ben 的上一个视频是关于 SPI 的,我记得一件事,SD 卡使用 SPI。这个小东西可以很容易地将 SD 卡连接到面包板计算机,并且读\写协议并不太复杂。所以现在我的 EEPROM 需要有代码来读取带有 SPI 的 SD 卡,但所有其余的都可以在大容量存储中,所以我希望,而不是将 FAT-16 存储处理程序的所有代码写入 EEPROM,我可以只写足够的代码来加载引导扇区。然后我可以从那里提取 FAT-16 代码,其他任何东西都可以来自文件系统。基本上我希望构建自己的计算机并为其编写自己的操作系统。这样,我的 EEPROM 只需将扇区 0(或 6,如果我觉得足以进行健全性检查并尝试恢复)加载到 RAM 中并跳转到它,就像 mini-BIOS 一样。
所以我的问题是,一旦我构建了可以测试的东西,我如何用我的 Windows 笔记本电脑将我的组装代码写入 SD 卡的引导扇区?有没有办法做到这一点,所以卡仍然可以通过正常方式读/写?换句话说,是否有一个实用程序或方法可以只覆盖扇区 0(也可能是扇区 6)中的引导代码?我不需要或不希望卡可以在普通机器上启动(实际上允许它被识别为其他机器可能是非常非常糟糕的事情)但我确实希望能够加载/在普通机器上保存文件,然后在我的修补机器上读取它们。
感谢您花时间阅读我的解释和问题。
stat - 磁盘扇区到底有多大?
因此,自古以来我就被告知硬盘(我对 HDD 而不是 SSD 特别感兴趣)以 512 字节、扇区为单位写入数据。但是当我用 then 询问文件夹时,stat .
我被告知块是 4096 字节。如何找出 HDD 而不是文件系统的扇区大小?
file - 有没有办法用程序或代码将文件文件写入驱动器(硬盘驱动器)的末尾?
我更喜欢将较少使用的数据(主要是视频)移动到硬盘的慢端。
现在,我使用 defraggler 来复制第一个文件,而不是使用 Defraggler 程序将选定的文件夹移动到驱动器的末尾。
如果第一部分需要 1 倍时间,第二部分理论上需要 2 倍时间,有时需要更多时间,所以我需要至少 3 倍时间而不是 1 倍时间。此外,在我将大量数据写入磁盘之后,如果我想再次将几个文件移动到最后,由于首先对所有文件进行碎片整理,碎片整理程序需要几天时间。
是否存在用于此目的的程序或代码,用于直接写入(复制)到驱动映射末尾的可用扇区?