这个问题可能听起来有点奇怪。我想完全控制我的键盘。在汇编语言中,可以通过更改键盘端口中运行的ISR的地址来实现。在Java中有可能吗?如何查找键盘端口号以及如何将键盘端口中的请求重定向到ISR?
答案 0 :(得分:1)
绝对没有办法做你要求的事。
虽然用Java编写ISR非常困难,但问题并不是与编程语言选择有任何关系。相反,它与用户模式/内核模式权限分离有关。
在现代操作系统上,中断服务程序在内核中完全处理,内核受硬件保护,不受用户空间(读:“你”)的影响。要在启动到Windows时与此级别的硬件进行交互,您将需要编写内核模式设备驱动程序。即使这对于像键盘这样的硬件来说也可能是不够的,Windows希望对其进行独占控制。
如果你想在这个级别玩硬件,最好的办法是将系统(或虚拟机)实际启动到DOS(不是DOSBox,不是命令提示符,而是实际的DOS),然后再刷新您的16位实模式英特尔组件和BIOS calls。
如果您正在尝试编写键盘记录器,或者键盘与正在运行的应用程序进行交互,那么您可以查看Win32 hooks。