| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1320 人关注过本帖
标题:[求助]关于用C实现重启!
只看楼主 加入收藏
雨哲
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-28
收藏
 问题点数:0 回复次数:16 
[求助]关于用C实现重启!
跪求各位大虾,指点一下关于重启的方法!!!万分感谢!~~~
2005-10-28 09:46
雨哲
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-28
收藏
得分:0 
就是Exit(参数);
当0的时候实现程序退出,
-1的时候哦实现重新启动.
EXIT调用我的这个函数,用C实现这两个功能.
2005-10-28 11:40
雨哲
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-28
收藏
得分:0 
在网上看到一个程序,但是理解不了.(可能是因为太菜了)!!
大家帮我看看!!

下面是C的源程序:
  冷启动:
  /*****************************************************************************
   coldboot.c
  
   Developed November 1991 by Larry Reeve
  
   A TurboC program to cold boot an IBM-PC (performs memory tests).
  ******************************************************************************/
  #include <dos.h>
  
  void main (void)
  {
   unsigned int far * Indicator;
   void (far * PtrReboot) (void);
  
   Indicator = MK_FP(0x0000,0x0472);
   PtrReboot = MK_FP(0xFFFF,0x0000);
  
   *Indicator = 0x0000;
   (*PtrReboot) ();
  }
  热启动:
  /*****************************************************************************
   warmboot.c
  
   Developed November 1991 by Larry Reeve
  
   A TurboC program to warm boot an IBM-PC.
  ******************************************************************************/
  #include <dos.h>
  
  void main (void)
  {
   unsigned int far * Indicator;
   void (far * PtrReboot) (void);
  
   Indicator = MK_FP(0x0000,0x0472);
   PtrReboot = MK_FP(0xFFFF,0x0000);
  
   *Indicator = 0x1234;
   (*PtrReboot) ();
  }
2005-10-28 11:52
雨哲
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-28
收藏
得分:0 
哪位大虾能帮我解释下啊!!郁闷中!
2005-10-28 17:17
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
  热启动:
  /*****************************************************************************
   warmboot.c
  
   Developed November 1991 by Larry Reeve
  
   A TurboC program to warm boot an IBM-PC.
  ******************************************************************************/
  #include <dos.h>
  
  void main (void)
  {
   unsigned int far * Indicator; //定义一个unsigned int far 指针
   void (far * PtrReboot) (void); //定义一个函数指针
  
   Indicator = MK_FP(0x0000,0x0472); // Indicator指向地址为0040:0072h
   PtrReboot = MK_FP(0xFFFF,0x0000); // PtrReboot 指向POST(Power-On Self Test:加电自检)例程;
  
   *Indicator = 0x1234; // 把0040:0072h(重置标志)设置为1234h,相当按下 Ctrl-Alt-Del

   (*PtrReboot) (); //把系统控制传送给POST例程,设置了重置标志,POST就可绕过通常的启动检测。

  }

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-10-28 19:11
雨哲
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-28
收藏
得分:0 
谢谢斑竹老大的帮助,但是还有问题问老大,Indictor地址是0040:0072h是固定的吗?不是的话为什么是这个地址啊!还有别的函数调用我的程序是否能实现重新启动的功能,望老大和知道的人能够帮帮我,万分感谢!!!!
2005-10-29 10:04
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
[QUOTE] A TurboC program to warm boot an IBM-PC. [/QUOTE]

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-10-29 10:54
雨哲
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-28
收藏
得分:0 

恩,明白了!!不过斑竹老大你知道怎么实现重新启动吗?我一点思路也没有!

2005-10-29 10:57
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
WIN下
一个比较搞笑的方法:

#include<dos.h>
main()
{
char *cmd="rundll32.exe user.exe,restartwindows";
system(cmd);
}

^_^

这个问题与系统相关,win有API可调用(ExitWindowsEx()),dos下有相关中断,你需要针对具体情况查看MSDN

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-10-29 11:27
雨哲
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-28
收藏
得分:0 
斑竹老大!嘿嘿~~~
刚才我说的不是很明白.其实不是操作系统重新启动,只是想让别的函数调用我的时候实现他的调用的这个SYSTEM重启!!
^_^
老大我吃饭去了,你也吃完帮我想想哈,麻烦你了!感激不尽!
2005-10-29 11:42
快速回复:[求助]关于用C实现重启!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018322 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved