1

CreateFileMapping と MapViewOfFile を使用して共有メモリのブロックを作成しているため、ポインターを取得しています。次に、QueryWorkingSetEx をそれに適用します。問題は、PSAPI_WORKING_SET_EX_INFORMATION 戻り構造で無効なページを取得し続けることです。私は NUMA アーキテクチャを使用していますが、他の非 NUMA マシンでも同じことが起こります。malloc で割り当てられたメモリでまったく同じ手順を試して有効な結果が得られた場合、QueryWorkingSetEx が共有メモリ ポインタをサポートしていない可能性はありますか?

4

1 に答える 1

1

Microsoftのサポートと話し合った後、これに対する解決策が与えられました.QueryWorkingSetExはMapViewOfFileの直後に呼び出されているため、メモリアドレスはまだ変更されていないため、ページはまだ物理メモリによってバックアップされていません. 解決策は、QueryWorkingSetEx が呼び出される前にメモリ アドレスに対して読み取りループを実行することです。これにより、メモリ マネージャはページを物理メモリでバックアップするように強制されます。

于 2012-09-25T09:12:40.890 に答える