![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 12:07 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » 如何确定系统的启动模式? |
| 可打印版本 1,415 / 13 |
| 第1楼 willsort | 发表于 2003-04-01 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
如何确定系统的启动模式? To All:
我正在做一个批处理程序,其中需要确定最近一次的系统启动模式是以下 1,冷启动 2,热启动 3,复位启动 等三种模式中的一种。请问用何种途径可以解决? |
|
| 第2楼 MYS | 发表于 2003-04-02 00:00 |
| 元老会员 发帖 1,637 积分 5,170 来自 广东佛山 | |
|
问题是,这三种启动模式在计算机的那里留下了记录信息?
实际上,这三种启动模式并不会在计算机内部留下任何有差异的记录信息。因此不可能对这三种模式进行判断。 |
|
| 第3楼 willsort | 发表于 2003-04-04 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
To mys:
应该有所区别。 据说热启动与冷启动的区别,是热启动时不会再重新校验内存,当然可能二者都会将内存清零,但至少说明二者所引用的BIOS的程序入口是不同的,而且前者没有加电的过程,我想知道有没有什么硬件端口或CMOS芯片可以记录这些不同。 |
|
| 第4楼 LanE | 发表于 2003-04-04 00:00 |
| 银牌会员 发帖 648 积分 1,835 | |
|
我记得好象是在内存的某个位置作了记号,但是由于程序运行的时候回读写内存,所以不太可能的。
|
|
| 第5楼 Wengier | 发表于 2003-05-03 00:00 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
终于找到判断的方法了。用一个叫作OnBoot的软件就可以轻易解决问题了。
|
|
| 第6楼 LanE | 发表于 2003-05-03 00:00 |
| 银牌会员 发帖 648 积分 1,835 | |
|
老大发上来吧
|
|
| 第7楼 willsort | 发表于 2004-02-02 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re Wengier:
我前一段时间找到过onboot,可经过在我原来的avi的386笔记本上测试,它将热启和冷启均认为是冷启,是机型的问题吗?那台本没有复位键,ami的bios。 |
|
| 第8楼 willsort | 发表于 2004-02-05 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re Wengier:
终于找到一点资料,在内存低地址处的BIOS通讯区存在一个标记字: 0040:0072 处的双字节内容在复位或冷启时,为0000h,在CAD热启时为1234h。 不过我怀疑在WINDOWS的保护模式下,此处是否可以直接存取。 |
|
| 第9楼 walu | 发表于 2004-02-20 00:00 |
| 高级用户 发帖 201 积分 916 | |
|
究竟怎样解决的,willsort能说说吗?
还有版主介绍的onboot这个软件我试了一下,但不知怎样用,版主能教教吗? 我是这样用的: onboot warm goto ok kecho ok! 但当热启动时,竟然不会跳到OK处显示OK |
|
| 第10楼 笑傲江湖 | 发表于 2004-02-20 00:00 |
| 初级用户 发帖 61 积分 271 | |
|
楼上讲的没错,
在BIOS数据区有这样一个标记字: 0040:0072 word 复位或冷启时,为0000h; 在热启时为1234h; 这部份为BIOS数据区,不会被其它程式占用。 |
|
| 第11楼 allan^ | 发表于 2004-03-23 00:00 |
| 初级用户 发帖 5 积分 110 | |
|
也有可能是4321h,或者是0064h,这里还是稍微有点区别的。
40:72h 的地方, 0000h cold boot 检查内存,所有内存内容丢失。 1234h warm boot 忽略内存检查,所有内存内容可能丢失。 4321h warm boot 忽略内存检查,RAM保持不变。 0064h BIOS 循环测试 另外,大多数notebook的BIOS都会提供一个记录,叫做Powerlog,这个LOG有一个,到两个BYTE,是写在EEPROM里的,他记载了前几次开机的情况。当中就会是冷启动,还是热启动,是正常关机还是非正常关机,甚至是不是WINDOWS关机都可以知道。比如DELL的机器就都会有这个LOG。 |
|
| 第12楼 willsort | 发表于 2004-03-23 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re allan^:
请问,你所说的这些,是不是与BIOS的版本有很大关系?比较老的机型(比如我提到的AVI386或者其他386级别的台式机)上有没有相关的记录或者字节内容。 另外,我用DEBUG实际观测了一下不同情况下42:70的字节内容,共实验了三台不同机型的机器,包括两台笔记本和两台台式机。每次都是进入WINDOWS的DOS实模式,发现无论冷启,热启,复位启其内容均为0000,请问是何原因? 最后,想问一下allan^兄,可以在什么地方找到详细的相关资料?不胜感谢! |
|
| 第13楼 allan^ | 发表于 2004-03-24 00:00 |
| 初级用户 发帖 5 积分 110 | |
|
POWER LOG的确和BIOS的关系很大,老的BIOS应该是不支持的。
另外,在BDA(BIOS DATA AREA)中的42:70的改写,是在实模式下有效,而不是WINDOWS的Vx86模式下的,WINDOWS下已经不用这个地方了。 建议你用纯DOS环境,比如DOS6.22来验证。 关于BDA的部分,在Frank van Gilluwe写的The Undocumented PC(PC技术内幕)有讲解。至于POWERLOG,我想在目前市面上的书籍里应该不会有提到。 |
|
| 第14楼 willsort | 发表于 2004-04-13 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re allan^:
很抱歉,前段时间一直很忙,没有及时回复。 你说的纯DOS环境应该是指不加载EMM386的实模式DOS环境吧?我会回去试试,希望有效。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |