最近、数回の停電の後、私のコンピューターはかなりめちゃくちゃになりました (BSOD がときどき発生し、OS 全体が非常に奇妙な動作をします)。
これで、コンピューターがめちゃくちゃになる前に完全に正常に実行されたプログラムができました。このプログラムは基本的に、 を使用してファイルを作成し、 を使用CreateFile
して書き込みますWriteFile
。このプログラムには、このファイルに基づいて他の処理を行うものもあります。プログラム全体も同様に奇妙な動作をしていることに気付きました。
私のデバッグ結果:
- その後
CreateFile
、ファイルが本来あるべき場所に作成されることに気付きました (エクスプローラーとコマンドラインを使用して確認)。 WriteFile
ファイルに書き込みませんでした (再度エクスプローラーとコマンドラインを使用して確認しました)。- その後
WriteFile
、エクスプローラーでファイルをダブルクリックするか、そのファイルに対して何かを行うたびに、すべてがファイルが存在しないかのように動作しました。 - すべての API がそれぞれの成功コードを返しました。絶対にエラーはありません。
プログラムを停止して IDE を終了した後、エクスプローラーに移動し、上記で作成したファイルを含むフォルダーを削除しようとすると、次のように表示されました。
ファイルは削除されましたが。
注:上記は常に発生するとは限りません。
上記のデバッグにより、OS全体の動作がおかしいため、プログラムも動作がおかしいという結論に達しました。私のプログラムに問題はありません (最悪の停電が発生する前はすべてが完璧に機能していたからです)。
とにかく、マイクロソフトはそのエラーについてこう言っています。基本的に、私のハードドライブには多くの不良セクタがあります。
私の質問:ハード ドライブが C で正常かどうかをプログラムで確認する方法はありますか? この検出は 100% 正しい必要はありません。ただし、このチェックを非常に高速にしたいと考えています (書き込みなどを頻繁に行うため)。
このチェックが必要なのは、プログラムの残りの部分が、ファイルが存在し、準備ができていると見なし (何もエラーが返されなかったため)、あらゆる種類の奇妙な動作が続くためです。自分のハードドライブがゾンクされていることを知らないかもしれないユーザーとして、プログラムにディスクチェックの実行を提案してもらいたいと思います。