ディスク内のすべてのボリュームのスナップショットを作成するプログラムがあります。を使用して各ボリュームのデータを読み取りますFSCTL_GET_VOLUME_BITMAP
。データを別のファイルに書き込みます。
すべてが正常に機能しますが、示されているようにコードを変更すると機能しません。
ボリュームに OS が含まれている場合は、いくつかのドライバー ファイルを system32/drivers にコピーするため、データを読み取る前に書き込みが発生します。
FSCTL_GET_VOLUME_BITMAP
書き込み完了後にのみ取得した Volumebitmap を読み込みます。ただし、新しくコピーされたファイルの値のみを返します。すでに存在していた他のすべてのデータは 0 です。
デバッグモードでコードをデバッグしようとすると、古いデータと新しいデータが完全に取得されます。しかし、リリース モードで実行しようとすると、新しくコピーされたファイルのみである変更された値が返されます。
これをデバッグモードとリリースモードにする問題は何ですか?
プロパティ C/C++ Optimization、Whole program Optimization -> はいを設定しようとしましたが、間違った値が提供されます。しかし、「いいえ」に設定すると、正しい結果が得られます。
そのため、リリース モード中に問題が発生します。