在VC下如何用中断?
各位大虾,我想用VC编写一个直接读取显示器EDID内容的程序,我已经在TC下通过调用INT10的4F功能实现了,但我不知如何在VC下编程实现?多多请教了?
在TC下的代码是:
REGS r;
r.ah=0x4f;
r.al=1;
int86(0x10,&r,&r);
p=(void*)FR_MK(_ES,r.x.di);
问题点数:100、回复次数:8Top
1 楼Searph(ViK.Lee)回复于 2000-11-25 13:30:00 得分 10
你用TC编译的程序在windows下运行正常么?Top
2 楼scaton(scaton)回复于 2000-11-25 14:52:00 得分 20
能否用中断与VC还是TC无关。关键是运行平台,在Win95,98下仍然支持中断和直接对硬件的操作(可以找相关资料看)。而在NT和Win2000下就有些麻烦了,对硬件的访问是操作系统和驱动程序的事,而用户只能通过驱动程序实现对硬件资源的访问。这也是为什么许多游戏能在95,98下玩却不能在NT下玩的原因。Top
3 楼Searph(ViK.Lee)回复于 2000-11-25 15:23:00 得分 20
有关,VC编译生成的Win32程序和TC编译生成的DOS程序运行环境不一样,Win9x会给DOS程序一个虚拟DOS环境,让这个DOS程序感觉和在DOS下运行一样,但Win32程序环境不会是这样的,不能直接用,很多东西都要改,有些中断也是用不了的,你可以把这个程序写成asm放到WinMain中运行看看,你会死的很惨的。Top
4 楼liulianxi(阿喜)回复于 2000-11-25 16:21:00 得分 20
根本就不能这样取,你看到的是int执行了,但实际上不是不执行的INT本身,你干吗要这样取?WINDOWS中不就有API吗?Top
5 楼xiaozuo(小卓)回复于 2000-11-25 21:44:00 得分 20
在VC中可以用_asm{}字节插入汇编指令实现,你的内容很容易用汇编指令写出。
Top
6 楼oldsunrain()回复于 2000-11-25 23:13:00 得分 10
在windows95,98,NT下没有DDK什么也干不了!干的了也不稳定!Top
7 楼aguang_liu()回复于 2000-12-10 11:43:00 得分 0
hai,liulianxi: 你能告诉我是什么API函数吗?我API了解甚少?
scaton: 你能给我举一个通过驱动程序实现对硬件资源的访问的例子吗?最好是访问显卡,声卡的例子Top
8 楼nohappy()回复于 2001-05-05 12:41:00 得分 0
你只能用vxd来做应为应用程序工作在ring3下,在ring3下是不能对显卡进行操作.必须用vxd在ring0下工作Top




