GetSystemFileCacheSize (kernel32)
Last changed: -71.238.209.156

.
Summary
Retrieves the current size limits for the working set of the system cache.

C# Signature:

/// <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
    );

VB Signature:

User-Defined Types:

/// <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,
}

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

The GetSystemFileCacheSize will never return the 'Disable' flags (2 & 8).

Tips & Tricks:

Please add some!

Sample Code:

   [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);
    }

Documentation