Tag: 硬盘

检查硬盘上的坏扇区

最近几次停电后,我的计算机已经搞得很乱(BSODs时不时,整个操作系统表现得非常奇怪)。 现在我有一个程序在我的计算机搞砸之前运行得非常好。 该程序基本上使用CreateFile创建一个文件,并使用WriteFile写入它。 这个程序还有其他东西基于这个文件做他们的事情。 我注意到整个程序也表现得很奇怪。 我的调试结果: 我注意到在CreateFile之后,创建了应该存在的文件(使用资源管理器和命令行进行检查)。 WriteFile没有写入文件(再次使用资源管理器和命令行进行检查)。 在WriteFile之后,每当我在资源管理器中双击文件或对该文件做任何事情时,一切都表现得好像文件不存在。 所有API都返回了各自的成功代码。 绝对没有错误。 我停止了我的程序并退出了IDE之后,我去了explorer并试图删除包含上面创建的文件的文件夹,它向我展示了这个: 该文件已被删除。 注意:上述情况并非总是如此。 由于上面的调试,我得出的结论是,由于我的整个操作系统表现得很奇怪,我的程序也很奇怪。 我的计划没有错(因为在那些严重的停电之前一切都很完美)。 无论如何,微软有这个说错误 。 基本上我的硬盘有很多坏道。 我的问题:有没有办法以编程方式检查C中的硬盘驱动器是否正常? 该检测不需要100%正确。 但是,我确实希望这个检查非常快(因为我做了很多写等等)。 我想要这个检查,因为到目前为止,我的程序的其余部分认为文件已经准备就绪(因为没有返回错误)并且随后发生了各种奇怪的行为。 作为一个可能不知道他/她的硬盘被驱动的用户,我希望我的程序建议运行磁盘检查。

在Linux上直接访问C程序没有FS的硬盘

我想直接从C程序访问整个硬盘。 它上面没有FS,永远不会是一个。 我只想打开/ dev / sda(例如)并在磁盘的块/扇区级别执行I / O. 我打算在Linux环境中编写一些用于学习C编程的程序(我知道C语言,Python,Perl和Java),但对Linux环境缺乏信心。 为了我的学习目的,我正在考虑使用kyoto-cabinet并将与计算的哈希相对应的值直接保存到硬盘的“块/扇区”中,将对:“哈希,块/扇区引用”记录到一个kyoto-cabinet哈希数据库文件。 我不知道使用标准CI / Ofunction是否可行,否则我不得不写一个“设备驱动程序”或类似的东西……