しばらく前に、プロセスのメモリを読み取り、特定の値 (たとえば、整数 42 が出現するすべての場所) を探すメモリ スキャナを C# で作成しました。それ以来、私はこのプロジェクトを再検討し、64 ビット システムで動作するように設計しようとしています。私が直面している問題は、64 ビット プロセスが最大 8 TB の仮想メモリを許可されていることです (32 ビット システムでは 2 ~ 4 GB の控えめなメモリと比較して)。少なくとも私のコードでは、妥当な時間内に 0 から 8 TB の範囲のすべてのアドレスをスキャンすることは不可能です。
Process.MainModule.BaseAddress でスキャンを開始しようとしましたが、読み取りを停止する場所がわからず、重要な値が確実に欠落しています。プロセスが実際に使用しているものの範囲をスキャンできるように、フィールドを絞り込むにはどうすればよいですか?