Bug: Reduced exceptions during cpu core init
Bug: GetSensorValuesFromSettings, Sensors.cs reduced number of exceptions
Bug: HTTP Server Null Reference Exception on StopHTTPListener
Bug: in some cases 64 bit process on a 32Bit system detected
Intel CPUs:
Max Temperature Sensor from all Cores
Average temperature from all core sensors
dist to tjmax sensor for each core
AMD:
support new cpus
bugfix power sensors
Mainboards:
Asrock:
AB350 PRO4
AB350M PRO4
AB350M
Fatal1ty AB350 Gaming K4
AB350M HDV
Phantom Gaming 6
A320M-HDV
Asrock Z77 Pro4-M
Asus:
ASUS ROG ZENITH EXTREME (X399)
Z170-A
Gigabyte:
GIGABYTE X399 AOURUS GAMING7
Currently it is assumed that `nvml.dll` is located in
```
%ProgramW6432%\NVIDIA Corporation\NVSMI\nvml.dll
```
Not everyone has it installed there. Those that have the nvidia drivers
installed through windows updates will have it in in
`%WINDIR%\system32\nvml.dll` and won't have anything under the "NVSMI"
directory.
Instead of hard coding `%WINDIR%\system32\nvml.dll` as a search
location, we can load whatever `nvml.dll` appears first in the search
order:
```csharp
LoadLibrary("nvml.dll")
```
From [Standard Search Order for Desktop
Applications](https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order#standard-search-order-for-desktop-applications):
> 1. The directory from which the application loaded.
> 1. The system directory. Use the GetSystemDirectory function to get the path of this directory.
> 1. The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.
> 1. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
> 1. The current directory.
> 1. The directories that are listed in the PATH environment variable. Note that this does not include the per-application path specified by the App Paths registry key. The App Paths key is not used when computing the DLL search path.
`%WINDIR%\system32` is the system directory and thus `nvml.dll` is loaded.
This will also allow those interested to override the `nvml.dll` by
placing their own in the current directory as LibreHM without effecting
a system installation.
Only if there is no `nvml.dll` in the search space does LibreHM fallback
to searching program files. This may technically be a breaking change
for those that have `nvml.dll` in both the search space (like
`%WINDIR%\system32\nvml.dll`) and `%ProgramW6432%\NVIDIA
Corporation\NVSMI\nvml.dll` and those files differ. I don't suspect this
to be a common occurrence.
If this is expected to be a common occurrence I can switch the logic such
that program files is checked before the standard search space, though
this would make it so one couldn't override the program files
`nvml.dll`.
Tested it and works great so far!
* (CS3005) Remove unused duplicate property differing only in case
* (CS3001, CS3003, CS3005) Make OpenHardwareMonitorLib not CLS compliant
* (NU5125) licenseUrl will be deprecated
* (CS0618) SecurityAction.RequestMinimum is obsolete
* "Migrated rules for Aga.Controls.ruleset" is missing
* Added basic Nvidia NVML library support and power usage sensor
* Added basic Nvidia NVML library support and power usage sensor
* Added Initialised check
* Made NvmlDevice internal
* Code formatting
* Move NvmlDevice and NvmlReturn to separate files
* Move code from NvidiaNVMLGPU class to NvidiaGPU class
* Replace call to SetDllDirectory with LoadLibrary/FreeLibrary and code formatting changes
* Made native methods private
* Fixed p/invoke definitions, removed unnecessary try/catch blocks. Code style cleanup
* Add IT8688E chip type
* Add Z390 M Gaming motherboard type
* Add proper voltage and temperatures for Z390 M Gaming
* Add support for Z390 Aorus Ultra and Z390 UD
* Rework NIC / Network Reporting
* Switch to monotonic timer for calculating time deltas between reports. Relying on `DateTime` to calculate time deltas is dangerous as it would be susceptible to phenomena such as a user changing their time or leap seconds. The Stopwatch class allows us to get a monotonic timer if it exists.
* Interface statistics reset on wake. Previously this would cause nonsensical negative values to be reported. The fix is to reset the internal state when the interface statistics have been reset.
* Previously, interface hardware already seen when scanned would be re-registered causing zeros to be reported, so the fix is to keep track of what NICs have already been registered
* Corollary, old interfaces were not closed when removed.
* Document the code and constants used (eg: "800" is not indicative of converting bytes to bits and a ratio to a percentage). Hopefully it is much clearer.
Thanks to @nickbabcock
* Hardware in IGroup is now IEnumerable. No point to call ToArray each time.
* Use ValueTuple insead of custom pair.
* ListSet -> HashSet
* Ring Collection -> List
* ReadOnlyArray -> ReadOnlyList
* Fixed 2 Bugs.
1. Mutex permissions: Global\\Access_ISABUS.HTP.Method, to allow other software access
2. when the driver is not in open the close function is not disposing the mutex
* Support for AMD Zen 2600(x), 2700(x)
Support undocumented temperature offset flag.
* Sync Git1
* AMD Zen 2600(x) + 2700(x) Temperatures
* Bugfix: temperature in AMD17H processors
* Added basic Aquastream Hardware Support using HidLibrary from mikeobrien (https://github.com/mikeobrien/HidLibrary)
* * Using hidlibrary from Nuget and fixing ProductName.
* Added missing string Format for Gadget.
* Changed variable names to follow style.
* Added new newlines. Make AquacomputerGroup public accessible.
* Added aquacomputer Icon after they allowed me to use it ;-)
* Corrected spelling
Corrected Variable names
* Removed External/HidLibrary
* Aquastream
- Remove Debug.
* A
- Clean up remains.
* Fixed 2 Bugs.
1. Mutex permissions: Global\\Access_ISABUS.HTP.Method, to allow other software access
2. when the driver is not in open the close function is not disposing the mutex
* Misc
- Misc.
This commit restores the previous logic of accepting an 8-byte intptr as evidence
enough for 64bit. It also accepts presence of IsWow64Process as evidence of 64bit.
On 64bit, this may return true or false depending on the process. On 32bit this entry
point is not available and an exception will be raised.
* Unified operating system type detection
* Revert "Unified operating system type detection"
This reverts commit 3edf0edfceaca259e041e23b9930d78531366fd5.
* Introduced OperatingSystem.IsLinux instead of constant check on Os version.
* Misc