キーボードの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'に' \\\\。\\ keyboard'を試しましたか? –
それは動作しません。私のアセンブラはそのようにバックスラッシュを解釈しません。 –
キーボードISRをフックできるようにするためのデバイスはありません。それは単純にユーザーモードのプロセスからではありません。ドライバから必要なものです。しかし、ドライバーからでも、Windowsの現代版ではKernel Patch ProtectionによってISRフックが防止されています。ドライバからは、代わりにI8042prtフィルタを使用できますが、USBキーボード(専用のキーボードIRQを持たない)は動作しません。 https://msdn.microsoft.com/en-us/windows/hardware/drivers/hid/3rd-party-filter-drivers –