但的確對于winio driver 還存在以下的二個問題﹗
1. 在xp下,一旦你load winio driver2.0后﹐你再開一個dos窗口﹐run "edit" command =》再將dos窗口切換到full screen,keyboard will no function,
即keyboard 沒有字符輸出﹐我看這是 winio driver2.0 本身的bug
2. 當開機直接進入xp limited user下﹐將不能正確使用winio driver. 延伸一個問題﹐在limited user 下﹐都無法讀寫registery, 請問如何在limited user 下提高自己的權限到administrator 

解决方案 »

  1.   

    1 ???????2 winio是使用NT的动态驱动加载卸载,并不是通常意义上win2000/xp所使用的WDM驱动程序,微软说2000可以使用NT的驱动,但具体2000/xp对Nt驱动的支持程度就不太清楚了,是否有兼容,或者不符合2000和xp的问题.................
    既然你觉的winio这样那样的不好用,那你就自己写吗,我就写过类似winio的驱动程序,只不过是WDM的,使用上不是很方便,另外有些寄存器不能写,可能是他自己的硬件保护机制,(可能还有别的寄存器控制了这个寄存器的读写)比如我的机器上并口用ecp模式的数据端口0x378H即使DOS下面的用汇编也无法写成功
    mov ax, 0x378
    mov dx, ax
    mov ax, 45h
    out dx, ax
      

  2.   

    在dos下用assembly是肯定可以寫的﹐當然是在實模式﹐若是在v86模式下﹐則不一定了。
    至于寫0x378不可以﹐我想肯定是因為你所說的(可能还有别的寄存器控制了这个寄存器的读写)
    我看了一下winio driver 和其它一個在2000,xp下讀寫端口的sourcecode, 它們都用到了
    iopm, 而我在ddk上發現﹐iopm 的確與dos窗口切換到full screen 時keyboard no function 有關﹐但不知道怎么改。至于讓我自己寫wdm嗎?至少現在還不行﹐功力不到﹕)我用了其它的一個DirectPort ﹐它也可以在2000﹐xp下讀寫端口﹐且無keyboard no function issue,不過它也存在我所提到的第二個問題﹐即開機后直接limited user 之后
    load 那個driver  有問題。但和winio 一樣﹐若是從administrator 切換到limited user 是可以的
      

  3.   

    關于無法在limited user下讀寫注刪表﹐以及如何獲得其權限讀寫注刪表﹐以及如何開機之后第一次進os就進入limited user而無法load winio driver 或load DirectPort driver
    可能我從根本機制上就不懂﹗﹗﹗
      

  4.   

    我又看了一遍Winio的代码,和我以前写的代码搞混了,我写的直接端口读写并不是他这种方法,感觉他的这个不是很直接,可能因为同时要实现物理内存读写,所以包含了许多映射关系,(他的物理内存和物理端口读写用的是同一种方法,可能会造成错误)最直接读写端口的函数应该是在核心态的READ_PORT_UCHAR和WRITE_PORT_UCHAR,DDK上有例子,叫genport,
    至于你的第一个问题,我刚才试了,没有出现那样的问题,我的是2000第二个问题,你可以安装那种不是开机后动态加载的驱动来解决,在管理员权限下安装,应该可以在受限模式下面使用,另外可以看看在驱动程序中修改受限注册表看行不行,我写的一个读写端口的例子应该可以解决你的问题,因为他是真正意义上的WDM驱动程序,需要安装后才能使用,不能动态加载,http://www.csdn.net/cnshare/soft/16/16791.shtm
      

  5.   

    Thanks too much。
    keyboard will no function 是在xp下才有這個bugs的﹐2000是沒有的﹐我也試過了。
    其次的問題我要好好看看了。