After coming across this post on the AutoIt forums while researching how to access shared memory of processes in AutoIt, I decided to have a go at translating the Delphi example code.
Below is a function w/ a working example showing how to access the AIDA64 shared memory.
First enable shared memory here: Preferences > Hardware Monitoring > External Applications > Enable Shared Memory
The length of the data depends on the number of active sensors and their content. As AIDA64 does not provide a buffer size value, we use _WinAPI_GetSystemInfo() <WinAPISys.au3> to get dwPageSize ($aArray). This value is then used as an address offset, and we continue reading chunks of data until we encounter a 0x00 NUL character.
Based on the Delphi example found in the AIDA64 documentation: https://www.aida64.co.uk/user-manual/external-applications
Feedback appreciated, especially as all this shared memory stuff is not my ordinary cup of... cake. And regarding this whole ordeal of reading data without knowing the exact length; I'm suspecting my solution to read chunks of data like done below is not by the book, and I'm concerned what might happen if the final chunk is exactly 4096 bytes in length. Will there still be a NUL terminator there? Hmm.
#NoTrayIcon #include <WinAPIFiles.au3> #include <WinAPISys.au3> ; #INDEX# =========================================================================================================================== ; Title .........: AIDA64 Shared Memory access for AutoIt3 ; Author(s) .....: demux4555 ; Reference .....: https://www.aida64.co.uk/user-manual/external-applications ; =================================================================================================================================== Global $vSharedmem_data ; The variable used to store the data we read from the shared memory Global $return = ExtApp_SharedMem_ReadBuffer_v2($vSharedmem_data) ; Now, let's see what happens when we run the function... If @error Then _Echo("! ExtApp_SharedMem_ReadBuffer_v2(): @errror = " & @error) If IsBinary($vSharedmem_data) Then ; Convert type Binary to actual human readable text. We also remove the excess of trailing 0x00 characters. $vSharedmem_data = StringStripWS(BinaryToString($vSharedmem_data), $STR_STRIPLEADING+$STR_STRIPTRAILING) EndIf _Echo() _Echo("> return = " & $return) ; The return value. Will be True if everything went ok. _Echo("> length = " & StringLen($vSharedmem_data)) ; The number of characters read from shared memory. _Echo("> data = " & $vSharedmem_data) ; The actual data. _Echo("> data(40) = " & "..." & StringRight($vSharedmem_data, 40)) ; shows the 40 right-most characters, and _should_ show the very end of the data at this point. _Echo() Exit ; #FUNCTION# ==================================================================================================================== ; Name ..........: ExtApp_SharedMem_ReadBuffer_v2 ; Description ...: AIDA64 Shared Memory Example for AutoIt3 ; Syntax ........: ExtApp_SharedMem_ReadBuffer_v2(Byref $_dOutput[, $_sSharedmemName = "AIDA64_SensorValues"]) ; Parameters ....: $_dOutput - [in/out] Variable to store the read data. ; $_sSharedmemName - [optional] Name of the AIDA64 shared memory. Default is "AIDA64_SensorValues". ; Return values .: Success: True. $_dOutput will be type Binary, containing a string of the XML values of the active sensors. ; Failure: False. ; Author ........: demux4555 ; Reference .....: https://www.aida64.co.uk/user-manual/external-applications ; =============================================================================================================================== Func ExtApp_SharedMem_ReadBuffer_v2(ByRef $_dOutput, $_sSharedmemName = "AIDA64_SensorValues") Local $_bReturn = False Local $_aGSI = _WinAPI_GetSystemInfo() ; Retrieves information about the current system... Ref: https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsysteminfo Local $_iPageSize = $_aGSI ; ... the page size and the granularity of page protection and commitment. Usually it is 4096, but we read it anyway. Ref: https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/ns-sysinfoapi-system_info Local $_hMapping = _WinAPI_OpenFileMapping($_sSharedmemName, $FILE_MAP_READ) ; Opens a named file mapping object. Ref: https://docs.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-openfilemappingw If Not IsPtr($_hMapping) Then Return SetError(-2, 0, $_bReturn) Local $_pMappedData = _WinAPI_MapViewOfFile($_hMapping, 0, 0, $FILE_MAP_READ) ; Pointer to the start address. Maps a view of a file mapping into the address space of a calling process. Ref: https://docs.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-mapviewoffile If @error Or Not IsPtr($_pMappedData) Then Return SetError(-2, 0, $_bReturn) ; Now we loop until we reach the end of the data. Local $_tData, $_dBuffer While 1 $_tData = DllStructCreate("BYTE[" & $_iPageSize & "]", $_pMappedData) ; Note: we use type BYTE (AutoIt type Binary) instead of CHAR (AutoIt type String). This allows us to look for value 0x00 (NUL termination of the data). If @error Then ExitLoop $_dBuffer = DllStructGetData($_tData, 1) ; The returned value is type Binary. If @error Or ($_dBuffer==0) Or (BinaryLen($_dBuffer)=0) Then ExitLoop ; Pretty sure $_dBuffer==0 can not happen, so just in case. $_dOutput = Binary($_dOutput & $_dBuffer) ; Add the read data to the end of the output variable. If StringRight($_dBuffer, 2)=="00" Then ExitLoop ; Look for NUL termination of the string data. $_pMappedData += $_iPageSize ; We change the address by using the page granularity value (i.e. 4096) as the offset. WEnd ; Quick cleanup $_bReturn = _WinAPI_UnmapViewOfFile($_pMappedData)=1 ; Unmaps a mapped view of a file from the calling process's address space. Ref: https://docs.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-unmapviewoffile _WinAPI_CloseHandle($_hMapping) Return $_bReturn EndFunc; Func _Echo($_data = "") ConsoleWrite($_data & @CRLF) EndFunc
Long time licensed owner of Aida64 Extreme. Current version: AIDA64 v6.10.5200. Benchmark Module 4.5.811-x64 (recently upgraded)
Hello everyone. I am new here and this is my first post. I am a senior citizen (tech-head like most of you) and wanted to share an interesting experience that happened to me today as I was experimenting with OCing my i7 8700k after upgrading from a SATA III Samsung SSD 860 EVO to an M.2 Samsung 970 EVO Plus SSD.
Let's start off the Aida64 FPU Stress Test. This test is for extreme overclockers who use full water cooled systems or use liquid nitrogen to acheive incredibly high CPU overclocks. For fun and knowing my system would crash, I tested my new OC of the CPU at 5Ghz per core. About 10 seconds into the FPU stress test the CPU overheated and the system crashed - as expected.
Now to real life Stability Testing. My CPU is nicely cooled with a Noctua D15 CPU Cooler. A giant of an air cooler. My normal, very stable overclock runs at 4.8Ghz. Never overheating during any stress test or demanding PC Video Gaming and Video Production.
Now here's the surprising experience I had today. After migrating my Primary drive with W10 OS and all installed programs from the Sata III 870 SSD to the M.2 970 SSD I decided to go into the UEFI BIOS and simply set the multipliers from 48 to 50. I ran all stress test (excluding FPU) and amazingly I was stable at 5Ghz! I can only attribute this to the new speed of the M.2 SSD. There is nothing new in my system, BIOS was updated to the latest version two months ago and all things you see below in these screenshot are what I purchased when I built this Desktop PC in 2018-2019.
I am curious if anyone with a similar build has tried overclocking their particular CPU after installing an M.2 SSD and found the would increase their CPU performance to a higher GHz and keep it stable.
I endorse Aida64 for all my benchmarking needs. I enjoy building a new Desktop PC every five years and have done so for 15 years. That's three new builds using Aida64 Extreme as my Stress Tester and Benchmarker.
NOTE: Cinebench R20 crashed my system at 5Ghz. I lowered the multiplier to 49 and ran it again. It did not crash the system.
Idle System in the screenies below: (gaming or heavy loads show average of 55 to 68 Celsius)
Hi, I've met a issue with the FPU stress test, the system would crash instantly when I click the "Start" buttom
it was ok to run a solo CPU stress test over 2 hour, but I just dont understand why it went wrong when conducting the FPU test. Any Ideas?
I've attached a AIDA64 report of my mobo
CPU:7940x (1.15volt, OC 4.5ghz)
RAM:Gskill 8G*4 4266mhz c17 (I set the frequency at 2133)
Recently I bought Presonus Firestudio 26x26 for my music studio
its not new IEEE 1394 firewire audiointerface....and its kill my nervs!
Few days its droppin out my sound (DAW, browser, AIMP etc.)
Its NOT Legacy IEEE 1394 bugg - i try install thise old drivers - its not fix the issue.
And accidentally i find out - IT AUDAS SENSORS PANEL IN DOCK make thosse glitches!
I use portable version
Try to install it regular.
Sh*t's start buggin again!!!!
I start system with out aida......take a half hours with out dropouts of sound - and first second when i run Aida - that crap start's again!
Please fix the issue wuth Aida64 sensors buggin Presonus Firestudio 26x26 (Firewire 1394...maybe other hardware....PCI-e Card by Texas Instrument - confirmed by Presonus - its good)
Hi, I've seen the list of supported external LCD manufacturers at the bottom of the External Displays page. However is there a device matrix that shows manufacturer, model, dimensions, interface, etc. of supported devices? I've been searching each of the manufacturers manually, but am having a hard time finding a display that will meet my needs.
I'd like to mod an LCD\OLED display on the front of my Corsair Air 240 case, to display AIDA64 stats. However it's a Mini-ITX and only has room for a 3.5"x 2" display, or a 3"x3" display:
I'd like to stick to a USB display for ease. Having a matrix of supported external devices would help narrow the list down.
Also, I see that Adafruit displays are supported; is that a specific device or all? Curious if this device works: https://www.adafruit.com/product/3315