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.