2

すべてのドライブの合計ページ ファイル サイズを読み取ろうとしています。私のコンピューターでは、約 8375 MB と表示されます。【コントロールパネルから見た場合】

しかし、C# コードから同じ値を取得しようとすると、違います。GlobalMemoryStatusEx()コードから同じ値 (つまり dwTotalPageFile)を読み取るために、kernel32.dll の関数を使用しました。16448.65 MB に相当する 17247666176 バイトの値が表示されます。

[return: MarshalAs(UnmanagedType.Bool)]

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool **GlobalMemoryStatusEx**([In, Out] MEMORYSTATUSEX lpBuffer);

【OS:Windows7 x64】

誰でも私を助けてください!

4

1 に答える 1

2

PagedSystemMemorySize64 は、プロセスに起因するページ メモリ プール内のオペレーティング システム カーネル メモリの合計バイト数です。Taskmgr.exe の「ページ プール」列に対応します。

PagedMemorySize64 は、プロセスに割り当てられたユーザー モード仮想メモリの合計バイト数です。Taskmgr.exe の「コミット サイズ」列に対応します。

プロセスはこれらのセクションでメモリを共有することに注意してください。すべてのプロセスの割り当ての合計は、実際に使用されるメモリ量よりもはるかに大きくなります。さらに、ページング ファイル内の「未使用」スペースの量を合理的に計算することはできません。Windows は、実行中のプロセスが必要とするものに基づいて、ページング ファイルを動的に拡大および縮小します。

于 2013-03-20T08:50:42.807 に答える