【发布时间】:2022-11-26 19:39:37
【问题描述】:
您好,我的目标是在进程运行时循环执行某些操作。 下面的代码假定我已经有一个有效的进程句柄。
我的第一次尝试是:
let mut exit:u32 = 0;
while GetExitCodeProcess(h_process, exit as *mut u32).as_bool(){
}
认为这可能有效,因为此函数的 GitHub 文档说第二个参数是 lpexitcode: *mut u32,但是此代码会导致 STATUS_ACCESS_VIOLATION 错误。
现在我确实让它工作了,因为我记得我遇到过的类似问题的解决方案。工作代码:
let mut exit: [u32; 1] = [0; 1];
while GetExitCodeProcess(h_process, exit.as_mut_ptr().cast()).as_bool() && exit[0] == 259 {}
我现在的问题是,我真的不明白为什么第一次尝试没有成功,而第二次尝试成功了。谁能向我解释一下,有没有更好的方法将 exit 存储在数组中?我还在 win 文档中看到,如果进程仍在运行,c++ 函数会将退出设置为 STILL_ACTIVE。为什么它在 rust 函数中不一样,因为 STILL_ACTIVE 也可以在 rust Crate 中找到。
【问题讨论】:
-
&mut exit as *mut u32。