gpt4 book ai didi

winapi - 为什么在将 EvtQuery 与 winapi crate 一起使用时会出现 ERROR_INVALID_PARAMETER?

转载 作者:行者123 更新时间:2023-11-29 08:26:36 30 4
gpt4 key购买 nike

我正在尝试使用 EvtQuery 读取 Windows 事件日志和 winapi crate .

我收到系统错误 87 - ERROR_INVALID_PARAMETER

fn to_vec(str: &str) -> Vec<u16> {
return std::ffi::OsStr::new(str)
.encode_wide()
.chain(Some(0).into_iter())
.collect();
}

fn read_log() {
let v = to_vec("System");
let provider = v.as_ptr();
let vv = to_vec("*");
let my_query = vv.as_ptr();
unsafe {
let query_read = winapi::um::winevt::EvtQuery(std::ptr::null_mut(), provider, my_query, 0);
let status = winapi::um::errhandlingapi::GetLastError();
println!("{}", status);
}
}

我做错了什么?

最佳答案

EvtQuery 的标志参数必须是 EVT_QUERY_FLAGS 中的一个或多个值枚举。

您使用的是文字 0,即 no existing flag :

typedef enum _EVT_QUERY_FLAGS {
EvtQueryChannelPath = 0x1,
EvtQueryFilePath = 0x2,
EvtQueryForwardDirection = 0x100,
EvtQueryReverseDirection = 0x200,
EvtQueryTolerateQueryErrors = 0x1000
} EVT_QUERY_FLAGS;

在您的情况下,您可以使用数值为 1 的 EvtQueryChannelPath。这显示为 EvtQueryChannelPath在 winapi 中。

关于winapi - 为什么在将 EvtQuery 与 winapi crate 一起使用时会出现 ERROR_INVALID_PARAMETER?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55195454/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com