Syser
驱动牛犊
驱动牛犊
  • 注册日期2001-09-21
  • 最后登录2008-02-29
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:2028回复:2

谁知道Ke386CallBios的用法,有了它,直接读写屏墓,磁盘都很容易解决。

楼主#
更多 发布于:2001-10-08 07:46
这个函数十分强大,有了它,直接读写屏墓,磁盘都很容易解决。
完全向DOS那样开放。
我已能肯定NT的屏墓操作最后会调它来Call BIOS服务。
它的参数我已猜出
如下:
NTSTATUS Ke386CallBios(BYTE Func,PBIOS_REQ BiosReq);

typedef struct _tagBIOS_REQ
{//寄存器的运行环境为V86模式下的1000:0000
 //且Buffer[0x88]会被映射到1000:2CD0上,如果要用
 //ES:DI传参数给BIOS的话,可把ES:DI->1000:2CD0,
 //然后再往Buffer里填参数。

DWORD State;
BYTE  Buffer[0x88];
DWORD GS;
DWORD FS;
DWORD ES;
DWORD DS;
DWORD EDI;
DWORD ESI;
DWORD EBX;
DWORD EDX;
DWORD ECX;
DWORD EAX;
DWORD EBP;
DWORD EIP;
DWORD CS;
DWORD UnKnown1;
DWORD ESP;
DWORD SS;
}BIOS_REQ,*PBIOS_REQ;
可惜啊,可惜啊,可惜啊,可惜啊,可惜啊,可惜啊。
但调它之前必须做些什么。
zlg
zlg
驱动牛犊
驱动牛犊
  • 注册日期2001-11-06
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-11-08 09:33
我可以写一个DRIVER 去直接读写屏幕线性内存在winnt,win2000环境下.
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-11-12 14:35
如果调用没有成功你也敢说猜出了?:)
如果真的如你所说那么此调用应该用到1个TSS. 这样就要避免线程切换. 请尝试将IRQL提示到DISPATCH_LEVEL
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
游客

返回顶部