Je suis en train d'accrocher le clavier ISR, mais je ne peux pas ouvrir l'appareil parce que CreateFile
renvoie 0000007Bh ERROR_INVALID_NAME
. Qu'ai-je mal fait?Comment obtenir la poignée du clavier?
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
Basé sur le format de la chaîne 'devicename' votre assembleur interprète les antislashs comme caractères d'échappement. Avez-vous essayé '\\\\. \\ keyboard' pour' filename2'? –
Ça ne marche pas. Mon assembleur n'interprète pas les barres obliques inverses de cette manière. –
Il n'y a aucun dispositif que vous pouvez ouvrir qui vous permettra de brancher le clavier ISR. Cela ne peut tout simplement pas être fait à partir d'un processus en mode utilisateur, c'est quelque chose que vous auriez besoin d'un pilote. Cependant, même à partir d'un pilote, l'accrochage ISR est évité grâce à Kernel Patch Protection sur les versions modernes de Windows. A partir d'un pilote, vous pouvez utiliser un filtre I8042prt à la place, mais notez que cela ne fonctionnerait pas avec les claviers USB (qui n'ont pas leur propre IRQ de clavier dédié). https://msdn.microsoft.com/en-us/windows/hardware/drivers/hid/3rd-party-filter-drivers –