gpt4 book ai didi

c - 如何直接写入磁盘?

转载 作者:行者123 更新时间:2023-11-30 21:34:55 25 4
gpt4 key购买 nike

我是一名 C 编程业余程序员,我知道如何直接从驱动器读取数据(file = fopen("//./D:", "r"); )。现在我想使用相同的方式将数据直接写入磁盘,将上述函数的第二个参数更改为“w”。但即使我以管理员身份运行该程序,它也不起作用。我想知道:

  1. 如何使用 C 语言将数据直接写入驱动器或闪存驱动器?

  2. Diskpart.exe 等程序如何写入磁盘?

我使用的是 Windows。

最佳答案

Windows 强制 special requirements for direct write access to disk volumes 。您必须拥有管理权限并且您必须采取额外的步骤向操作系统证明您不会覆盖已安装文件系统的内容(这可能会导致整个计算机崩溃) 。 fopen("//./D:", "w") 不会采取这些额外的步骤。在我看来,你不能用 fopenfreadfwrite 等来做到这一点;您需要使用CreateFile 、ReadFile、WriteFile等直接操作系统原语。

(正如在问答中所讨论的,现在已将其作为重复项关闭,这些“额外步骤”中的第一个是打开设备路径名以进行读取和写入访问,即使您的意思只是在 CreateFile 级别写入 -- GENERIC_READ|GENERIC_WRITE。fopen 模式 "w" 仅向 CreateFile 提供 GENERIC_WRITE。您还需要指定一个特定配置、共享模式、文件属性、安全属性等)

关于c - 如何直接写入磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54911338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com