/// <summary></summary>
/// <param name="lpMinimumFileCacheSize">Receives the minimum size of the file cache, in bytes</param>
/// <param name="lpMaximumFileCacheSize">Receives the maximum size of the file cache, in bytes</param>
/// <param name="Flags">See File_Cache_Flags</param>
/// <returns>0=fail !0=success</returns>
[DllImport("kernel32.dll", SetLastError=true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetSystemFileCacheSize(
ref IntPtr lpMinimumFileCacheSize,
ref IntPtr lpMaximumFileCacheSize,
ref File_Cache_Flags Flags
);
/// <summary>Flags for use with ?etSystemFileCacheSize. Note that corresponding enable & disable are mutually exclusive and will fail.</summary>
[Flags]
public enum File_Cache_Flags : uint // 32 bits
{
MAX_HARD_ENABLE = 0x00000001,
MAX_HARD_DISABLE = 0x00000002,
MIN_HARD_ENABLE = 0x00000004,
MIN_HARD_DISABLE = 0x00000008,
}
Do you know one? Please contribute it!
The GetSystemFileCacheSize will never return the 'Disable' flags (2 & 8).
Please add some!
[DllImport("kernel32", SetLastError = true)]
public static extern bool GetSystemFileCacheSize(
ref IntPtr lpMinimumFileCacheSize,
ref IntPtr lpMaximumFileCacheSize,
ref int lpFlags
);
static void Main(string[] args)
{
IntPtr lpMinimumFileCacheSize = IntPtr.Zero;
IntPtr lpMaximumFileCacheSize = IntPtr.Zero;
File_Cache_Flags lpFlags;
bool b = GetSystemFileCacheSize(ref lpMinimumFileCacheSize, ref lpMaximumFileCacheSize, ref lpFlags);
if(!b)
throw new Win32Exception();
Console.WriteLine(lpMinimumFileCacheSize);
Console.WriteLine(lpMaximumFileCacheSize);
}