我想挂钩键盘ISR,但我无法打开设备,因为 CreateFile
返回0000007Bh ERROR_INVALID_NAME
。我做错了什么?如何获取键盘设备的句柄?
invoke DefineDosDevice,[raw],filename1,devicename
lea rcx,[filename2]
invoke CreateFileA,rcx,GENERIC_ALL,FILE_SHARE_WRITE or
FILE_SHARE_READ,0,3,0,0
ret
section '.data' data writeable readable
devicename db '\\Device\\KeyboardClass0',0
filename1 db 'keyboard',0
filename2 db '\\.\keyboard',0
raw dq 1
。你有没有为'filename2'尝试'\\\\。\\键盘'? –
它不工作。我的汇编程序不用这种方式解释反斜杠。 –
没有可以打开的设备,可以让您挂接键盘ISR。这根本不可能不是来自用户模式的过程,而是驾驶员需要的。然而,即使是来自驱动程序,ISR挂钩也可以通过现代版本的Windows上的内核补丁保护来防止。在驱动程序中,您可以使用I8042prt过滤器,但请注意,这不适用USB键盘(它们没有自己的专用键盘IRQ)。 https://msdn.microsoft.com/en-us/windows/hardware/drivers/hid/3rd-party-filter-drivers –