【发布时间】:2012-09-02 09:28:07
【问题描述】:
以下对 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");
}
【问题讨论】:
-
您是否启用了 SE_INCREASE_QUOTA_NAME 权限?
-
@Alan Stokes 好主意,我会尽快尝试。
-
错误
5=ERROR_ACCESS_DENIED应该建议您缺少权限。 -
我已经发布了一个完整的powershell script,它同时执行 GetSystemFileCacheSize 和 SetSystemFileCacheSize 函数。如果您想比较它们,它会为实际的内核 API 调用运行一些与 C++ 非常相似的 C# 代码。
标签: c++ visual-studio-2010 mfc msdn