0

次のSetSystemFileCacheSize()の呼び出しは失敗しますが、「FILE_CACHE_MIN_HARD_ENABLE」を0に置き換えると成功します。

私は何が間違っているのですか?

SIZE_T dwMinimumFileCacheSize = 1048576; // Exact number reported by SetSystemFileCacheSize.
SIZE_T dwMaximumFileCacheSize = 1099511627776; // Exact number reported by SetSystemFileCacheSize.

int result = SetSystemFileCacheSize(
    dwMinimumFileCacheSize, // dwMinimumWorkingSetSize
    dwMaximumFileCacheSize,  // dwMaximumWorkingSetSize,
    FILE_CACHE_MIN_HARD_ENABLE // Works if this flag is set to 0.
  );
if (result == 0)
{
  // Error is "5" if it fails.
  wprintf(L"  Error E2469: Could not set size of system cache, error %u.\n", GetLastError());
}
else
{
  wprintf(L"  Pass.\n");
}
4

1 に答える 1

0

FILE_CACHE_MIN_HARD_ENABLEが有効になっている場合、dwMinimumFileCacheSizeはdwMaximumFileCacheSizeより64KB小さくなければならないことがわかります。

修正は次のとおりです。

int result = SetSystemFileCacheSize(
    dwMinimumFileCacheSize - 64 * 1024, // dwMinimumWorkingSetSize
    dwMaximumFileCacheSize,  // dwMaximumWorkingSetSize,
    FILE_CACHE_MIN_HARD_ENABLE // Works if this flag is set to 0.
  );
于 2012-09-21T11:33:28.517 に答える