写VXD程序遇到的麻烦事---有意者请进!

qir2000 2001-09-05 12:17:57
小弟在写一个静态VXD程序时想通过在程序中加入代码
in al,21h
or al,02h
out 21h,al
屏蔽键盘,结果该静态VXD能成功加载,但键盘却没有屏蔽,
实在是百思不解,还望各高手指点!
菜鸟我感激不尽!
...全文
226 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjm 2001-12-10
  • 打赏
  • 举报
回复
kk
8341 2001-12-07
  • 打赏
  • 举报
回复
不用in al,21h,只要:
mov al,02h
out 21h,al
应该可以搞定!如果不行,用

mov al,0ffh
out 21h
全部封住!
8341 2001-12-07
  • 打赏
  • 举报
回复
干嘛还要in al,21h?我看直接:
mov al,02h
out 21h,al
就可以的。我在一个程序里用mov al,0ffh out 21h,al 把所有中断都封住啦!按关机钮都不好使!要按reset的!
ucla 2001-09-10
  • 打赏
  • 举报
回复
:) rockanroll@hotmail.com
qir2000 2001-09-08
  • 打赏
  • 举报
回复
请继续
qir2000 2001-09-07
  • 打赏
  • 举报
回复
帮一下忙--高手!
qir2000 2001-09-07
  • 打赏
  • 举报
回复
帮一下帮--高手!
qir2000 2001-09-07
  • 打赏
  • 举报
回复
请继续!
sbks 2001-09-07
  • 打赏
  • 举报
回复
gz
idAnts 2001-09-07
  • 打赏
  • 举报
回复
做个记号。
qir2000 2001-09-07
  • 打赏
  • 举报
回复
上面的高手!

留个E怎么样!有事请教!
ucla 2001-09-07
  • 打赏
  • 举报
回复
哦,忘记了。补充一点:
如果你eject了scan code,就不要再把控制权传递到原来的hook procedure了,这样如果原来的hook procedure返回CLC会把你程序的STC覆盖掉。:(

今天第一次来csdn,随便瞎聊聊啦
^_^
ucla 2001-09-07
  • 打赏
  • 举报
回复
在Windows中直接用8259屏蔽键盘中断并不是一个好主意。

如果截获键盘输入,并且决定是加以处理之后传递给虚拟机,还是拒绝处理,可以Hook VKD_Filter_Keyboard_Input。参见98DDK中对VKD_Filter_Keyboard_Input的说明:

VKD_Filter_Keyboard_Input
include vkd.inc

VxDCall VKD_Filter_Keyboard_Input
mov ScanCode, cl

Allows a virtual device to monitor keyboard input and either modify or reject keyboard keystrokes. To monitor keyboard input, a virtual device must hook this service. The virtual device sets the carry flag to reject a keystroke , or clears the carry flag to continue processing the keystroke. Uses Flags.

Returns the scan code of the keystroke in CL, if if the carry flag is clear.

代码示例:
1. hook:
BeginProc HookKeyboardFilter
cmp _hKbdHook, 0
jne @F ; already installed
mov eax, @@VKD_Filter_Keyboard_Input
mov esi, OFFSET32 KbdHookProc ; Your hook procedure VMMcall Hook_Device_Service
jc @F
mov [_hKbdHook], esi
@@: ret
EndProc HookKeyboardFilter

2. hook procedure:
BeginProc KbdHookProc, PUBLIC, HIGH_FREQ, HOOK_PROC, _hKbdHook, LOCKED
; your own code here
; STC for reject
; CLC for accept
jmp [_hKbdHook]
EndProc KbdHookProc

试试看啦 :)
tjm 2001-09-07
  • 打赏
  • 举报
回复
gz
zgqyl 2001-09-06
  • 打赏
  • 举报
回复
这几条指令是屏蔽键盘吗?不对吧。
CodeDemon 2001-09-06
  • 打赏
  • 举报
回复
你看看是不是跟WINDOWS自己的键盘驱动VKD有关,一般的键盘操作是由它来处理的,
qir2000 2001-09-06
  • 打赏
  • 举报
回复
帮帮忙啦!
Chice_wxg 2001-09-06
  • 打赏
  • 举报
回复
我也来up一下。
qir2000 2001-09-05
  • 打赏
  • 举报
回复
各位多多捧场啊!
qir2000 2001-09-05
  • 打赏
  • 举报
回复
没人知道吗?
加载更多回复(3)

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧