小编hed*_*017的帖子

Windows 虚拟鼠标驱动程序

我正在开发 KMDF 虚拟鼠标驱动程序。

总体思路是 KMDF 根枚举非过滤器驱动程序,它将能够将输出报告发送到鼠标和键盘驱动程序堆栈。

我的驱动程序已经在工作并向其他驱动程序堆栈发送请求,但没有结果。

Microsoft 资源中几乎没有记录报告类型和数据包格式。没有关于我需要发送哪些数据和哪个设备来移动鼠标指针、模拟点击(使用鼠标或键盘)的信息。

只有关于 HID 客户端、驱动程序等的一般信息。他们的文档通常引用 Windows 驱动程序示例 git 存储库,但存储库不包含任何与我的任务接近的源。驱动开发的人很少,所以也没有教程。

我很感激给我一个提示,我在哪里可以找到有关我的任务的更多信息。

windows mouse driver wdk hid

5
推荐指数
1
解决办法
7518
查看次数

如何在Rust中打印表达式及其值?

有办法做到这一点吗?

self.mega_ultra_field = 100500;
print_expr_and_value!(self.mega_ultra_field);
Run Code Online (Sandbox Code Playgroud)

输出:

self.mega_ultra_field 100500
Run Code Online (Sandbox Code Playgroud)

reflection debugging macros logging rust

5
推荐指数
1
解决办法
74
查看次数

如何优雅地关闭Tokio运行时以响应SIGTERM?

我有一个main函数,我在其中创建一个Tokio运行时并在其上运行两个期货.

use tokio;

fn main() {
    let mut runtime = tokio::runtime::Runtime::new().unwrap();

    runtime.spawn(MyMegaFutureNumberOne {});
    runtime.spawn(MyMegaFutureNumberTwo {});

    // Some code to 'join' them after receiving an OS signal
}
Run Code Online (Sandbox Code Playgroud)

我如何收到SIGTERM,等待所有未完成的任务NotReady并退出应用程序?

asynchronous future shutdown rust rust-tokio

5
推荐指数
2
解决办法
902
查看次数

如何以特殊方式将bool转换为Rust中的Option或Result?

似乎没有办法使用这种单行转换std.

我不喜欢这种冗长:

match my_bool {
    true => Ok(()),
    false => Err(MyError::False),
}
Run Code Online (Sandbox Code Playgroud)

我想使用某种单线,例如:

let my_bool = true;
let my_option = my_bool.to_option(MyObject{}); // true => MyObject{}, false => None
let my_result = my_bool.to_result(MyObject{}, MyError{}); // true => MyObject{}, false => MyError{}
Run Code Online (Sandbox Code Playgroud)

什么是最短的代码呢?

types casting type-conversion rust

5
推荐指数
4
解决办法
435
查看次数

在Rust中循环遍历整数的字节的惯用方法是什么?

我尝试了这样一段代码来遍历一个字节u64:

let mut message: u64 = 0x1234123412341234;
let msg = &message as *mut u8;

for b in 0..8 {
    // ...some work...
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,Rust不允许这种类似C的索引.

arrays iteration byte unsafe rust

2
推荐指数
1
解决办法
179
查看次数