如何在 Windows 中使用鼠标挂钩

问题描述 投票:0回答:0

我试图在内核堆栈的其他部分可以读取它之前收听鼠标动作。为此,我找到了 Microsoft 创建的资源,它正是这样做的。以下链接指向他们的示例过滤器驱动程序,该驱动程序连接到鼠标数据包链中,从而能够在其他软件查看鼠标输入之前侦听和修改鼠标输入。 https://github.com/microsoft/Windows-driver-samples/tree/main/input/moufiltr

问题是我无法让它工作。我首先使用 Visual Studio 的 KMDF 模板,然后添加了 moufiltr 标头和类。然后我在我的 VM 上运行它并使用调试器来侦听调试消息。 DriveryEntry 调试消息得到正确打印,但其他任何函数都没有打印出来,这让我相信它们没有被调用。如果我不得不猜测,我会说问题出在这样的事情上......

WDF_DRIVER_CONFIG_INIT(&config, MouFilter_EvtDeviceAdd);

这里 MouFilter_EvtDeviceAdd 不包含任何参数,所以我假设它没有尝试调用我的那个函数版本,这就是为什么没有从该函数中打印调试消息的原因。但话虽如此,我不知道如何提供正确的参数

(IN WDFDRIVER Driver, IN PWDFDEVICE_INIT DeviceInit)
。这也是
VOID MouFilter_EvtIoInternalDeviceControl(IN WDFQUEUE Queue, IN WDFREQUEST Request, IN size_t OutputBufferLength, IN size_t InputBufferLength, IN ULONG IoControlCode)
的问题,因为我不知道如何获取这些参数,而且我在那个 Microsoft 示例中找不到任何内容。

windows kernel driver mouselistener
© www.soinside.com 2019 - 2024. All rights reserved.