SetSystemMemoryDivision (coredll)
Last changed: -80.195.114.35

.
Summary

C# Signature:

[DllImport("coredll.dll", SetLastError=true)]
static extern uint SetSystemMemoryDivision(uint dwStorePages);

VB Signature:

Declare Function SetSystemMemoryDivision Lib "coredll.dll" (dwStorePages As UInt32) As UInt32

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

This function takes one argument - size of storage in memory pages. It returns result code that could be:

0 - SYSMEM_CHANGED: Memory division changed successfully
1 - SYSMEM_MUSTREBOOT: Need to reboot to accept memory division changes
2 - SYSMEM_REBOOTPENDING: Cannot change memory division because the system should be rebooted after the previous call before
3 - SYSMEM_FAILED: Change failed. Use GetLastError to get more details.

Tips & Tricks:

Please add some!

Sample Code:

namespace MemGetSet

{

    public partial class Form1 : Form
    {
    [DllImport("coredll", SetLastError = true)]
    private static extern int GetSystemMemoryDivision(ref int storage, ref int ram, ref int pageSize);

    [DllImport("coredll", SetLastError = true)]
    private static extern int SetSystemMemoryDivision(int pages);

    public Form1()
    {
        InitializeComponent();
    }

    private void btnGet_Click(object sender, EventArgs e)
    {
        int storage=0;
        int ram=0;
        int pageSize=0;

        int result = GetSystemMemoryDivision( ref storage, ref ram, ref pageSize);

        edtPages.Text = string.Format("Get Mem result {0} storage {1} ram {2} pagesize {3}", result, storage, ram, pageSize);
    }

    private void btnSet_Click(object sender, EventArgs e)
    {
        int result = SetSystemMemoryDivision(int.Parse(edtPages.Text));

        edtPages.Text = string.Format("Set Mem result {0} ", result);
    }
    }

}

Documentation