lots of debug tracing, fixed bug
This commit is contained in:
parent
45192f895b
commit
c5f7a98382
19
src/lib.rs
19
src/lib.rs
|
@ -11,7 +11,7 @@ use std::{
|
||||||
|
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use log::error;
|
use log::error;
|
||||||
use utils::string::ToWide;
|
use utils::{string::ToWide, win32::Win32Error};
|
||||||
use winapi::{
|
use winapi::{
|
||||||
shared::ntdef::{HANDLE, ULONG},
|
shared::ntdef::{HANDLE, ULONG},
|
||||||
um::{
|
um::{
|
||||||
|
@ -105,6 +105,8 @@ impl ImageHelp {
|
||||||
}
|
}
|
||||||
}?;
|
}?;
|
||||||
|
|
||||||
|
log::debug!("trying GetProcAddress");
|
||||||
|
|
||||||
let proc_addr = unsafe {
|
let proc_addr = unsafe {
|
||||||
let func_cname = CString::new(function_name)?;
|
let func_cname = CString::new(function_name)?;
|
||||||
let proc_adr = GetProcAddress(module_handle, func_cname.as_ptr());
|
let proc_adr = GetProcAddress(module_handle, func_cname.as_ptr());
|
||||||
|
@ -117,7 +119,9 @@ impl ImageHelp {
|
||||||
return Ok(proc_addr.as_ptr() as *const _);
|
return Ok(proc_addr.as_ptr() as *const _);
|
||||||
}
|
}
|
||||||
|
|
||||||
utils::win32::error::true_or_last_error(|| unsafe {
|
log::debug!("SymLoadModuleExW..");
|
||||||
|
|
||||||
|
match utils::win32::error::true_or_last_error(|| unsafe {
|
||||||
dbghelp::SymLoadModuleExW(
|
dbghelp::SymLoadModuleExW(
|
||||||
GetCurrentProcess(),
|
GetCurrentProcess(),
|
||||||
null_mut(),
|
null_mut(),
|
||||||
|
@ -128,7 +132,14 @@ impl ImageHelp {
|
||||||
null_mut(),
|
null_mut(),
|
||||||
0,
|
0,
|
||||||
) != 0
|
) != 0
|
||||||
})?;
|
}) {
|
||||||
|
Ok(_) => Ok(()),
|
||||||
|
Err(Win32Error { error_code: 0 }) => {
|
||||||
|
log::debug!("Symbols already loaded.");
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Err(err) => Err(err),
|
||||||
|
}?;
|
||||||
|
|
||||||
let try_find_symbol = || {
|
let try_find_symbol = || {
|
||||||
let mut sym_info =
|
let mut sym_info =
|
||||||
|
@ -138,6 +149,8 @@ impl ImageHelp {
|
||||||
let symbol_name_utf16 = function_name.to_wide_null();
|
let symbol_name_utf16 = function_name.to_wide_null();
|
||||||
sym_info.MaxNameLen = 255;
|
sym_info.MaxNameLen = 255;
|
||||||
|
|
||||||
|
log::debug!("SymFromNameW..");
|
||||||
|
|
||||||
utils::win32::error::true_or_last_error(|| unsafe {
|
utils::win32::error::true_or_last_error(|| unsafe {
|
||||||
dbghelp::SymFromNameW(*process_handle, symbol_name_utf16.as_ptr(), &mut sym_info)
|
dbghelp::SymFromNameW(*process_handle, symbol_name_utf16.as_ptr(), &mut sym_info)
|
||||||
!= 0
|
!= 0
|
||||||
|
|
Loading…
Reference in a new issue