加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows如何在系统调用期间切换到管理员模式?

发布时间:2020-12-14 05:51:59 所属栏目:Windows 来源:网络整理
导读:Windows如何在系统调用期间切换到管理员模式?我听说过一个关于“陷阱0”的东西,但这看起来甚至不像是x86指令.我介绍了一些系统调用,但我找不到任何系统调用.许多Windows系统调用是否以用户模式运行?哪个DO在管理员模式下运行? 解决方法 系统调用也称为软
Windows如何在系统调用期间切换到管理员模式?我听说过一个关于“陷阱0”的东西,但这看起来甚至不像是x86指令.我介绍了一些系统调用,但我找不到任何系统调用.许多Windows系统调用是否以用户模式运行?哪个DO在管理员模式下运行?

解决方法

系统调用也称为软件中断.调用软件中断的x86指令具有助记符INT.如何将数据传递到操作系统由操作系统ABI定义.据我所知,Windows使用立即0x80的所有例程,并通过寄存器发送额外的数据,但我不确定. 0x20是第一个可用的立即数,因为0到31的范围被保留并用于一般异常,例如整数除零和内存故障.

基本上发生的是CPU更改为特权模式并读取IDTR(中断描述符表寄存器).在那里它找到IDT(中断描述符表)的物理存储器地址,并根据软件中断指令中的8位立即数查找IDT. IDT可以存储在内存中的任何位置. IDTR可以通过LIDT和SIDT指令读/写. IDT可以存储各种信息,但是对于中断,它将地址存储到与INT立即关联的服务例程.

启动软件中断的win32函数示例.. hm. printf和朋友肯定会这样做,EnterCriticalSection也一样.在Windows Vista和Windows 7中,由于新的复合管理器,一些OpenGL和DirectX API调用现在需要往返内核域.对于OpenGL,它适用于读取当前后台缓冲区的所有函数,如glReadPixels,glCopy(Sub)TexImage2D等.

P.S:用一小撮盐拿这个帖子.已经有一段时间了,因为我用这种方式搞砸了Windows,而且我没有进行大量的事实检查.欢迎编辑和评论.

这里是原始Intel 386 manual的链接(无论如何我引用了)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读