gpt4 book ai didi

usb - 推出我自己的 Windows 操纵杆 HID 驱动程序?

转载 作者:行者123 更新时间:2023-12-01 19:30:21 28 4
gpt4 key购买 nike

我有一个 USB 操纵杆,我想为其编写自己的 HID 驱动程序。值得注意的是,我想在 Windows 接收操纵杆输入和我的应用程序收到该输入事件通知之间插入延迟。我还想更改我的应用程序感知的操纵杆的身份。我从未为 Windows 编写过驱动程序,更不用说 HID 驱动程序了。任何人都可以向我提供有关如何执行此操作的建议或指示吗?

最佳答案

当您按下操纵杆上的旋钮时,电信号会以 IRP's 的形式到达操作系统(并进入游戏)。通过驱动链。在某个时刻拦截这些 IRP 并延迟转发到下一个驱动程序可以延迟操纵杆输入。这可以通过 driver filters 来实现.

要编写 Windows 驱动程序,您需要使用 WinDDK .

Windows 驱动程序的入口点是 DriverEntry function 。在此函数中,您将 Hook 要拦截的 IRP 以及处理它们的回调函数,在我们的例子中,是延迟转发的回调函数。

例如,假设我们要延迟的 IRP 是 IRP_MJ_READ,我们的回调函数称为 CallbackDelayForwarding:

// the function that delays the IRP
NTSTATUS CallbackDelayForwarding(
IN PDEVICE_OBJECT pDeviceObject,
IN PIRP pIrp
){
// delay the forwarding
}

// this is the driver entrypoint, similar to "main" in user-mode executables
NTSTATUS DriverEntry(
IN PDRIVER_OBJECT pDriverObject,
IN PUNICODE_STRING RegistryPath
){
pDriverObject->MajorFunction[IRP_MJ_READ] = CallbackDelayForwarding;
...
}

要延迟 CallbackDelayForwarding 内的转发,您必须使用 KeInitializeTimer 中的函数系列来模拟某种 sleep (可能与锁结合),KeDelayExecutionThread 等。

要将过滤器驱动程序安装在操纵杆驱动程序链中,您可以使用 .inf files

检查toaster filter driver sample在 WinDDK 中,您可以在 INSTALL_DIR/src/general/toaster/ 中找到它,另请参阅 here .

相关链接:
http://www.rootkit.com/newsread.php?newsid=187
http://www.techtalkz.com/microsoft-device-drivers/269654-toaster-filter-driver.html

关于usb - 推出我自己的 Windows 操纵杆 HID 驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3106862/

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