在xp和2k 下,是不能进行低层读写,所以用一些工具切换ring3到ring0,可是读写还是不能正常的,代码如下:
_asm xor ax,ax
_asm mov dx,02fbh //io port为r/w register
_asm out dx,ax //只为了debug,直接写入端数据。
//_asm JMP $+2
_asm in ax,dx //ax在该句执行后为ff
_asm mov result,ax可是结果result 还是 ff. 为什么呢?高手啊!救命呀,做不出来明天就要被公司开了
_asm xor ax,ax
_asm mov dx,02fbh //io port为r/w register
_asm out dx,ax //只为了debug,直接写入端数据。
//_asm JMP $+2
_asm in ax,dx //ax在该句执行后为ff
_asm mov result,ax可是结果result 还是 ff. 为什么呢?高手啊!救命呀,做不出来明天就要被公司开了
要访问端口,先切换到内核状态,一般要写驱动来实现。
你在SOFTICE下访问端口试试
http://www.internals.com/上有一個winio的源代碼,你可以參考參考!
我正是用的winio的驱动,将系统换在r0运行这段代码的,
02fb port为串口的lcr读写寄存器,我在borland c++3.0下做同样的动作,是正确的。我不知道会不会还有什么别的原因在vc6下?
win98+vc6.0结果正确(不要winio)win2k/nt/xp+winio+vc6.0(没有结果)?
系统高手,我该怎么做呢?