From cb1c2b0921d2876da866fdfc173483afb33ea607 Mon Sep 17 00:00:00 2001 From: donpat1to Date: Sat, 2 Aug 2025 14:40:14 +0200 Subject: [PATCH] try cpu once more --- WatcherAgent/src/main.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/WatcherAgent/src/main.rs b/WatcherAgent/src/main.rs index 2a1d029..9eb6c6c 100644 --- a/WatcherAgent/src/main.rs +++ b/WatcherAgent/src/main.rs @@ -470,7 +470,7 @@ fn get_cpu_temp() -> Option { #[cfg(target_os = "windows")] { use com::runtime::init_runtime; - use com::sys::{CLSCTX_INPROC_SERVER, COINIT_MULTITHREADED}; + use com::sys::{CLSCTX_INPROC_SERVER, COINIT_MULTITHREADED, FAILED}; use widestring::U16CString; use winapi::shared::rpcdce::*; use winapi::shared::wtypes::VT_I4; @@ -560,12 +560,24 @@ fn get_cpu_temp() -> Option { let mut obj: *mut wbemcli::IWbemClassObject = std::ptr::null_mut(); let mut returned = 0; let hr = (*enumerator).Next( - wbemcli::WBEM_INFINITE.try_into().unwrap(), + wbemcli::WBEM_INFINITE as i32, // Fixed: cast directly to i32 1, &mut obj, &mut returned, ); + if FAILED(hr) { + eprintln!("Failed to enumerate WMI objects (HRESULT: {})", hr); + (*enumerator).Release(); + continue; + } + + if returned == 0 { + // No more items + (*enumerator).Release(); + continue; + } + if hr == 0 && returned > 0 { let mut variant = std::mem::zeroed::(); // Try different possible property names