Refact, replace GetLastError() by std::io::Error::last_os_error()

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou
2023-11-20 17:15:15 +08:00
parent 9c12c3ee4e
commit c85682de8d
5 changed files with 102 additions and 67 deletions

View File

@@ -1,7 +1,10 @@
use hbb_common::{allow_err, bail, lazy_static, log, ResultType};
use std::sync::{
mpsc::{channel, Sender},
Mutex,
use std::{
io::Error,
sync::{
mpsc::{channel, Sender},
Mutex,
},
};
use winapi::{
ctypes::c_int,
@@ -10,10 +13,7 @@ use winapi::{
ntdef::NULL,
windef::{HHOOK, POINT},
},
um::{
errhandlingapi::GetLastError, libloaderapi::GetModuleHandleExA,
processthreadsapi::GetCurrentThreadId, winuser::*,
},
um::{libloaderapi::GetModuleHandleExA, processthreadsapi::GetCurrentThreadId, winuser::*},
};
const GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT: u32 = 2;
@@ -43,8 +43,8 @@ fn do_hook(tx: Sender<String>) -> ResultType<(HHOOK, HHOOK)> {
&mut hm_keyboard as _,
) {
tx.send(format!(
"Failed to GetModuleHandleExA, error: {}",
GetLastError()
"Failed to GetModuleHandleExA, error: {:?}",
Error::last_os_error()
))?;
return Ok(invalid_ret);
}
@@ -55,8 +55,8 @@ fn do_hook(tx: Sender<String>) -> ResultType<(HHOOK, HHOOK)> {
&mut hm_mouse as _,
) {
tx.send(format!(
"Failed to GetModuleHandleExA, error: {}",
GetLastError()
"Failed to GetModuleHandleExA, error: {:?}",
Error::last_os_error()
))?;
return Ok(invalid_ret);
}
@@ -68,7 +68,10 @@ fn do_hook(tx: Sender<String>) -> ResultType<(HHOOK, HHOOK)> {
0,
);
if hook_keyboard.is_null() {
tx.send(format!(" SetWindowsHookExA keyboard {}", GetLastError()))?;
tx.send(format!(
" SetWindowsHookExA keyboard, error {:?}",
Error::last_os_error()
))?;
return Ok(invalid_ret);
}
@@ -76,9 +79,15 @@ fn do_hook(tx: Sender<String>) -> ResultType<(HHOOK, HHOOK)> {
if hook_mouse.is_null() {
if FALSE == UnhookWindowsHookEx(hook_keyboard) {
// Fatal error
log::error!(" UnhookWindowsHookEx keyboard {}", GetLastError());
log::error!(
" UnhookWindowsHookEx keyboard, error {:?}",
Error::last_os_error()
);
}
tx.send(format!(" SetWindowsHookExA mouse {}", GetLastError()))?;
tx.send(format!(
" SetWindowsHookExA mouse, error {:?}",
Error::last_os_error()
))?;
return Ok(invalid_ret);
}
@@ -131,12 +140,18 @@ pub fn hook() -> ResultType<()> {
if FALSE == UnhookWindowsHookEx(hook_keyboard as _) {
// Fatal error
log::error!("Failed UnhookWindowsHookEx keyboard {}", GetLastError());
log::error!(
"Failed UnhookWindowsHookEx keyboard, error {:?}",
Error::last_os_error()
);
}
if FALSE == UnhookWindowsHookEx(hook_mouse as _) {
// Fatal error
log::error!("Failed UnhookWindowsHookEx mouse {}", GetLastError());
log::error!(
"Failed UnhookWindowsHookEx mouse, error {:?}",
Error::last_os_error()
);
}
*CUR_HOOK_THREAD_ID.lock().unwrap() = 0;
@@ -162,7 +177,10 @@ pub fn unhook() -> ResultType<()> {
let cur_hook_thread_id = CUR_HOOK_THREAD_ID.lock().unwrap();
if *cur_hook_thread_id != 0 {
if FALSE == PostThreadMessageA(*cur_hook_thread_id, WM_USER_EXIT_HOOK, 0, 0) {
bail!("Failed to post message to exit hook, {}", GetLastError());
bail!(
"Failed to post message to exit hook, error {:?}",
Error::last_os_error()
);
}
}
}

View File

@@ -3,6 +3,7 @@ use crate::{platform::windows::get_user_token, privacy_mode::PrivacyModeState};
use hbb_common::{allow_err, bail, log, ResultType};
use std::{
ffi::CString,
io::Error,
time::{Duration, Instant},
};
use winapi::{
@@ -12,7 +13,6 @@ use winapi::{
windef::HWND,
},
um::{
errhandlingapi::GetLastError,
handleapi::CloseHandle,
libloaderapi::{GetModuleHandleA, GetProcAddress},
memoryapi::{VirtualAllocEx, WriteProcessMemory},
@@ -266,9 +266,9 @@ impl PrivacyModeImpl {
CloseHandle(token);
if 0 == create_res {
bail!(
"Failed to create privacy window process {}, code {}",
"Failed to create privacy window process {}, error {:?}",
cmdline,
GetLastError()
Error::last_os_error()
);
};
@@ -284,8 +284,8 @@ impl PrivacyModeImpl {
CloseHandle(proc_info.hProcess);
bail!(
"Failed to create privacy window process, {}",
GetLastError()
"Failed to create privacy window process, error {:?}",
Error::last_os_error()
);
}

View File

@@ -1,7 +1,10 @@
use super::{PrivacyMode, PrivacyModeState, INVALID_PRIVACY_MODE_CONN_ID, NO_DISPLAYS};
use crate::virtual_display_manager;
use hbb_common::{allow_err, bail, config::Config, log, ResultType};
use std::ops::{Deref, DerefMut};
use std::{
io::Error,
ops::{Deref, DerefMut},
};
use virtual_display::MonitorMode;
use winapi::{
shared::{
@@ -9,7 +12,6 @@ use winapi::{
ntdef::{NULL, WCHAR},
},
um::{
errhandlingapi::GetLastError,
wingdi::{
DEVMODEW, DISPLAY_DEVICEW, DISPLAY_DEVICE_ACTIVE, DISPLAY_DEVICE_ATTACHED_TO_DESKTOP,
DISPLAY_DEVICE_MIRRORING_DRIVER, DISPLAY_DEVICE_PRIMARY_DEVICE, DM_POSITION,
@@ -193,9 +195,9 @@ impl PrivacyModeImpl {
)
{
bail!(
"Failed EnumDisplaySettingsW, device name: {:?}, error code: {}",
"Failed EnumDisplaySettingsW, device name: {:?}, error: {:?}",
std::string::String::from_utf16(&display.name),
GetLastError()
Error::last_os_error()
);
}
@@ -227,9 +229,9 @@ impl PrivacyModeImpl {
== EnumDisplaySettingsW(dd.DeviceName.as_ptr(), ENUM_CURRENT_SETTINGS, &mut dm)
{
bail!(
"Failed EnumDisplaySettingsW, device name: {:?}, error code: {}",
"Failed EnumDisplaySettingsW, device name: {:?}, error: {:?}",
std::string::String::from_utf16(&dd.DeviceName),
GetLastError()
Error::last_os_error()
);
}