关于windows ring3保护模式与中断调用

最近发现了一个问题,就是进行某些中断调用时,并不如想象中的那样执行.

比如一个简单的ROM BASIC调用,我的机器(XP系统)弹出一个对话框:NTVDM不支持ROM BASIC.而且我在进行ROM BASIC调用的时候,用尽了一切办法,DEBUG跟踪、嵌入汇编、找到中断的地址直接调用等,结果都是一样的,系统通知我NTVDM不支持ROM BASIC.这就让我很郁闷,因为ROM BASIC 是系统热启动的中断,但是很显然不能够通过中断调用的形式对其进行引用操作.我去问了下QQ上的朋友,其曰此乃WINDOWS下的保护模式起的作用,它会保护某些中断以及系统的安全性,会禁止执行某些中断,除非进入ring0的系统级别.此其一.

第二,某年某月某日我执行了一个简单的程序,它的作用是屏蔽CTRL+ALT+DEL键的热启动键,程序如下:

#include

unsigned char stack[0x1000];

unsigned int ss,sp;

int key;

char far *fp;

void interrupt (*old9)();

void interrupt newint9()

{

disable();

ss=_SS; sp=_SP;

_SS=_DS;

_SP=(unsigned)&stack[0x1000-2];

enable();

if((key=inportb(0x60))==0x53) /*del键的扫描码*/

{

if((bioskey(2)&0xc)==0xc) /*CTRL+ALT的状态码*/

{

key=inportb(0x61);

outportb(0x61,key); /*清除键盘缓冲区*/

outportb(0x20,0x20); /*结束键盘硬中断*/

*fp=0; /*将键盘缓冲区的状态字清零*/

}

else old9();

}

else old9();

disable();

_SS=ss;

_SP=sp;

enable();

}

int main(int argc,char *argv[])

{

switch(argc)

{

case 1:

fp=MK_FP(0x40,0x17); /*键盘缓冲区状态字的地址*/

old9=getvect(0x9);

setvect(0x60,old9);

setvect(0x9,newint9);

keep(0,(_SS+(_SP/16))-_psp); /*安装新中断并驻留*/

printf("Install OK!\n");

break;

case 2:if(argv[1][0]=='d')

{

disable();

setvect(0x9,old9);

enable();

printf("Deinstall OK!\n");

}

break;

default:printf("BYE BYE!\n");

}

getch();

return 0;

}

程序的意思是改变原来的键盘中断,判断当键盘按下的时候是否按了CTRL+ALE+DEL,如果按了就清除键盘缓冲区中的内容,从而屏蔽热键.

而运行结果呢,无论是在DOS下还是在WINDOWS下,CTRL+ALT+DEL百试百灵,屡试不爽,就是说程序根本就没有起到什么作用.那么是不是说这个热键热启动也是在WINDOWS的保护伞之下呢?

但是C语言完全可以操作底层的东西,操纵一些键盘操作应该是没有什么问题地,与是我尝试用最简单的办法直接用一条空指令代替原INT 9H中断,结果是:在该程序下键盘失灵,而当跳出程序键盘就恢复正常了.

所以关于在WINDOWS下的中断调用我很迷茫,是不是说中断调用你只可以利用它完成一些事情,而不可以彻底的改变它?

在我对键盘中断的其他改动中,都可以正确执行,惟有对热键进行屏蔽时会出现问题。还是另外有其他的办法进行屏蔽?

所以还请各位不吝赐教,在下洗耳恭听,我很想明白如何利用中断改变系统的中断,或者说我该如何跳过WINDOWS的控制?就拿上面两个例子来说,如果我要进行机器热启动的话,如何调用ROM BASIC,还是另外有其他的办法。再有如果要进行屏蔽热键,如何才能做到,还是用C语言的办法行不通(我想不应该行不通的吧?),莫非非要用VC、VB之类的语言才行么?

总之还请各位赐教。

保护模式下C语言编程,关于windows ring3保护模式与中断调用相关推荐

  1. linux操作系统下 c语言编程入门

    linux操作系统下 c语言编程入门 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门 ...

  2. [转] linux操作系统下c语言编程入门

    (一)目录介绍 1)Linux程序设计入门--基础知识  2)Linux程序设计入门--进程介绍  3)Linux程序设计入门--文件操作  4)Linux程序设计入门--时间概念  5)Linux程 ...

  3. linux操作系统下c语言编程入门

    linux操作系统下c语言编程入门  整理编写:007xiong  原文:Hoyt等 (一)目录介绍 1)Linux程序设计入门--基础知识  2)Linux程序设计入门--进程介绍  3)Linux ...

  4. 【转贴】linux操作系统下c语言编程入门

    [转贴]linux操作系统下c语言编程入门 发信人: Lerry (驴是的念来过倒·杏红等头墙上爬), 信区: Linux 标 题: linux操作系统下c语言编程入门 发信站: 哈工大紫丁香 (Fr ...

  5. Linux下C语言编程

    第1章 Linux下C语言编程简介 本章将简要介绍一下什么是Linux,C语言的特点,程序开发的预备知识,Linux下C语言开发的环境,程序设计的特点和原则以及编码风格等.通过本章的学习,可以对在Li ...

  6. 初识Linux下C语言编程

    本章将简要介绍一下什么是Linux,C语言的特点,程序开发的预备知识,Linux下C语言开发的环境,程序设计的特点和原则以及编码风格等.通过本章的学习,可以对在Linux下使用C语言编程有一个基本的了 ...

  7. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍  3)Linux程序设计入门--文件操作  4)Linux程序设计入门--时间概念  5)Linux程序设计入门--信号处理  6)Linux程序设计入门--消 ...

  8. linux c语言 ppt,linux操作系统下c语言编程入门.ppt

    linux操作系统下c语言编程入门.ppt Linux操作系统下C语言编程入门 CNT Linux操作系统简介基础知识进程介绍文件操作时间概念消息管理线程操作网络编程Linux下C开发工具介绍 一 L ...

  9. Linux下C语言编程-进程的创建

    Linux下C语言编程-进程的创建 作者:hoyt 1.进程的概念 Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命令.那么操作系统是怎么实现多用户的环境呢?在现代的操作 ...

最新文章

  1. 利用systemd 实现 tomcat 多实例
  2. legend3---lavarel多对多模型操作实例
  3. IDEA2019版最新配置SVN及上传教程-超详细图文详解
  4. lunix下的redis数据库操作——list列表
  5. java反射是运行时,Java反射(三)在运行时利用反射分析对象
  6. 华为技术有限公司申请“荣耀视频”、“荣耀钱包”等商标
  7. 零基础如何学习ui设计?
  8. [高光谱] Hyperspectral-Classification Pytorch 数据集的读取、划分、加载
  9. Java学习资料-Java容器
  10. 徐松亮算法教学-基于C语言的数独(九宫格)多种终盘生成方法(包含矩阵镜像旋转转置等相关算法)
  11. u深度重装系统详细教程_u深度u盘安装win10系统教程
  12. js中Math.random()生成指定范围数值的随机数
  13. 计算机考试界面没有验证码,win10系统下网页验证码显示不了的两种解决方法
  14. 少子寿命测试仪 硅片少子寿命测试系统美国Sinton WCT-120少子寿命测试仪
  15. 零厨艺也只需10分钟就能让厨房剩货大变身——牛肉饭
  16. 第十三届蓝桥杯大赛软件赛省赛 Python 大学 B 组
  17. 对话即平台,一场对长尾理论的逆向革命
  18. 上传图片到到本地图片服务器操作方式
  19. 中国科大的毕业生去向
  20. 站内搜寻引擎 php mysql_迅搜(xunsearch) - 开源免费中文全文搜索引擎|PHP全文检索|mysql全文检索|站内搜索...

热门文章

  1. U盘文件夹变成程序的解决办法
  2. pureref 平移用不了_参考图片神器《PureRef》操作全翻译
  3. 【国产虚拟仪器】基于DSP+FPGA+ADS1282支持32Bit高精度数据采集方案(三)系统性能测试
  4. ASP.Net Core Web API Swagger 版本控制与注释
  5. python编写斗地主游戏
  6. 巫女みこ☆かがみん 界面汉化+修改器+看图工具
  7. 窗口置顶工具v2.6.0(截图+贴图)
  8. [HITML] 哈工大2020秋机器学习Lab1实验报告
  9. ASUS P5K SE 开启 AHCI
  10. vega8显卡和mx250哪个好_vega8核显性能跟mx250独显2g那个好