Jump to content

Get physical memory (GetPhysicallyInstalledSystemMemory)


AdmiralAlkex
 Share

Recommended Posts

http://msdn.microsoft.com/en-us/library/cc300158(v=vs.85).aspx

Minimum supported client = Windows Vista with SP1

Minimum supported server = Windows Server 2008

MsgBox(0, "Title", "GetPhysicallyInstalledSystemMemory = " & _GetPhysicallyInstalledSystemMemory())

Func _GetPhysicallyInstalledSystemMemory()
    $aRet = DllCall("Kernel32.dll", "int", "GetPhysicallyInstalledSystemMemory", "uint64*", "")
    If @error Then Return SetError(1, 0, 0)
    Return $aRet[1]
EndFunc

Okay, we are not checking the return value of the function, but I don't think it's necessary.

Edited by AdmiralAlkex
Link to comment
Share on other sites

Nice find. The first parameter should be of type 'uint64*' however. (64-bit integer).

Link to comment
Share on other sites

Nice, weird why this isn't in WinAPIEx.au3 but I suppose there is _WinAPI_GetPerformanceInfo() I will add this to my Function Folder :)

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

weird why this isn't in WinAPIEx.au3

Maybe Yashied still uses Win XP? :)

but I suppose there is _WinAPI_GetPerformanceInfo()

GetPerformanceInfo is not the same, you could say that it returns what is available for Windows, GetPhysicallyInstalledSystemMemory returns what you actually have on your motherboard.

Take my computer for example, 6GB ram, but I've it limited to 4GB due to a bugged driver, so there is only 3327MB available due to graphics card and stuff hogging the upper memory range.

GetPerformanceInfo[3] = 3488706560

GetPhysicallyInstalledSystemMemory = 6291456

On older OS you can get this with GetSystemFirmwareTable or WMI. Interesting read (do a find-in-page for GetPhysicallyInstalledSystemMemory and read a little after that).

See _ComputerGetMemory from CompInfo.au3 for WMI example.

Link to comment
Share on other sites

OK, my mistake ;) It makes sense now you say and after reading. Plus thanks for the website I will have a little look around the other categories :)

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

  • 10 months later...

Was gonna ask how this differs from MemGetStats() but I figured it out, but just in case someone else wonders:

MemGetStats() shows the reported memory amount, after what is left through sharing. So if I have 4gb of memory, but it's sharing half a gb, then MemGetStats() reports 3.5gb.

This grabs the actual installed amount. (You can correct me if I'm mistaken.)

Link to comment
Share on other sites

I am not sure about the word "sharing", but yeah. GetPhysicallyInstalledSystemMemory() returns what is actually installed while MemGetStats(), _WinAPI_GetPerformanceInfo() and such returns what is usable to Windows (basically).

See post #5 too.

Link to comment
Share on other sites

I just noticed (again? can't remember :) ) that GetPhysicallyInstalledSystemMemory was added to some time ago. I recommend everyone to check that UDF if you haven't.

Link to comment
Share on other sites

I'm curious as to what the outcome of this function would be inside a VM.

If you mean whether it returns the memory of the host or the VM, then oversized screenshot (VMware Workstation) says VM.
Link to comment
Share on other sites

Thanks, I ask because some time ago when you made this function I asked a few e-buddies to

test this out and a few of them came back with the result 0.

I can't remember is I found a pattern, do you know if the the function works on 64 bit, or if

any OS archs that it stumbles on?

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...