看了以前好多关于这方面的贴子,思路是有了..但是怎么没人实现过啊??
哪位高手能把经验传授传授啊???   EAMIL: [email protected]

解决方案 »

  1.   

    我们的实现是用硬件支持. 也就是一个power信号而已.至于软件么,我看要bios支持 然后手动修改CMOS信息.设置定时启动时间选项,还有校验和....考虑到每种主板的CMOS信息都不一样. 这么做有的麻烦了 ^_^.
      

  2.   

    我的设想是在软件里修改CMOS的定时启动设置和定时时间..但是手头上没CMOS的资料啊?
    哪里有呢???
      

  3.   

    软件修改 CMOS...
    晕倒,不怕病毒啊?有的CMOS(比如Toshiba笔记本)是用软件来设置的,只是开放一些固定的功能,倒是不怕病毒,但要支持你说的,可能要和厂商好好商量一下了。
      

  4.   

    虽然病毒可写入(及破坏)个人计算机的CMOS内存内,但病毒不能「藏」在那里。CMOS内存不具备寻址位置。贮存在内的数据,不会加载个人计算机,也不会被执行。   病毒可使用CMOS内存贮存部分编码,但贮存在该处的可执行编码必须先移往DOS内存才可执行。因此,病毒不能从CMOS内存扩散,也不可藏在那里内。迄今尚未发现可把编码贮存在CMOS内存内的病毒。   有报告称AMI基本输入输出系统曾受特洛依病毒感染。其实,它不是一种病毒;它只是一种不会复制的「恶作剧程序」。这种有害的程序并不是在磁盘上,也不是在CMOS内;它只是直接写入系统上的基本输入输出系统只读存储器芯片内的编码。到了十一月十三日,这个程序会终止计算机的激活过程,并且透过扬声器播出「Happy Birthday」的声音。
      

  5.   

    用软件设置CMOS就如开机是在CMOS设置程序(固化在BIOS)内设置一样罢了..
    我要的不过如此,不想客户去CMOS设置中设置.....用软件设置比较直观..
      

  6.   

    CMOS RAM地址内容??谁有啊??
      

  7.   

    其实有一个简单方法,找一个定时器安装到电源开关上不就行了,原理类似于定时炸弹。何必兴师动众要改写bios呢,但电子市场去转转,现在的定时开关体积和电子表才不多
      

  8.   

    不懂就别乱说啦,,谁说我要改写BIOS啊??看清楚点再说嘛...
    CMOS中的定时启动小时分钟和秒钟都能设置了,但是就差RTC激活这一步.
    有谁做过吗??
      

  9.   

    CMOS RAM地址内容??谁有啊??
    查一查你的主板说明书,上面应该有相关的资料.
      

  10.   

    自动启动时间是在01H,03H,05H这三个地址里面设定,但是激活RTC自动启动功能的和设定每月启动日期的不知道在哪个地址??还是要怎么设置??
      

  11.   

    嘻嘻,CPU都没电,而CMOS里只有一些数据,谁来执行?还是用一个带定时器的电源开关,什么机器都可搞定。
      

  12.   

    现在的主板一般都支持定时开机的.网卡或调制解调器激活的也是可以的.
    我想实现的功能是:每天7:00点开机,11:00关机,13:00开机,17:00关机.
    这就要求能在软件里面更改CMOS中设置的自动开机时间啊.
    是不是有点意思呢???带定时器的电源开关能不能实现这种功能啊??
      

  13.   

    现在的ATX电源在关机后都会向主板供电的,定时开机其实就是CMOS中设置定时时间后,时间一到,将会向主板(具体是哪里就不知道了)发一个开机信号.
      

  14.   

    现在就差修改CMOS中ENABLE RTC定时开机功能了..
    不知道地址在哪里,直接修改不知道行不行??还有不同的主板这个地址会不会不同??
    时间已经知道怎么修改了..
      

  15.   

    你看看能不能自己解析出来,CMOS就只有那么几百个字节,不过不同主板的地址是不是一样就不太清楚了
      

  16.   

    我的分析是,在关机的状态下利用软件启动机器是可能的,因为开机前主板是由cmos电池供电,是可以发送power信号的,而我现在的思路是能否找到相关的资料--power信号的格式及的发送方法.应该不会只有主板的工程师知道的吧.我们会继续关注的.
      

  17.   

    我把CMOS数据分析了好久,可惜学识不够,找不出来啊.
      

  18.   

    摘自http://expert.csdn.net/Expert/topic/1394/1394382.xml?temp=.8210413
    小弟不怎么懂汇编,谁能解释一下,现在要用直接写端口(WINIO)
    将 8:00:00写入定时开机,该怎么修改?code segment
    .486p
            assume cs:code
    start:
    ;set stack for return
            push dx
            sub ax,ax
            push ax
    //激活自动开机功能.这一段不知何解??看来汇编要学好啊....兄弟们
    ;test RTC status
    repeat:  mov al,0ah
           out 70h,al
           in al,71h
           and al,80h
           jnz repeat
    ;RTC-REG
            mov al,0bh
            out 70h,al
            in al,71h
            or al,26h
            out 71h,al
    ;set RTC event enable
           mov eax,8000f840h
           mov dx,0cf8h
           out dx,eax
           mov dx,0cfch
           in  eax,dx
           add eax,02h
           mov edx,eax
           dec dx
           in ax,dx
           or ax,0500h       out dx,ax
    //写入秒分时,已经在VC中实现:(用WINIO)
    /*
                #define IOADDRESS 0x070
                #define IODATA    0x071
       SetPortVal(IOADDRESS,0x01,1);
       SetPortVal(IODATA,0x00,1);
       SetPortVal(IOADDRESS,0x03,1);
       SetPortVal(IODATA,0x00,1);
       SetPortVal(IOADDRESS,0x05,1);
       SetPortVal(IODATA,0x08,1);
    */
    ;write seconds
           mov al,00h
           out 70h,al
           in al,71h
           add al,6
           daa
           mov bl,al
           mov al,01h
           out 70h,al
           mov al,bl
           out 71h,al
    ;write minutes
           mov al,02h
           out 70h,al
           in al,71h
           mov bl,al
           mov al,03h
           out 70h,al
           mov al,bl
           out 71h,al
    ;write hours
           mov al,04h
           out 70h,al
           in al,71h
           mov bl,al 
           mov al,05h
           out 70h,al
           mov al,bl
           out 71h,al;shutdown
            mov eax,8000f840h
            mov dx,0cf8h
            out dx,eax
            mov dx,0cfch
            in eax,dx
            add eax,04h
            mov edx,eax
            dec dx
            mov eax,00003c00h
            out dx,eax;return
            mov ah,4ch
            int 21h    code    ends
              end start
      

  19.   

    BOOL Bare_SetAlarmTime(LPSYSTEMTIME lpst)
    {    BYTE cStatusRegA, cStatusRegB, Year;#ifdef NOTDEF
        NKDbgPrintfW(TEXT("\r\nSet Alarm Time %d, %d, %d, %d, %d, %d, %d, 
    %d\r\n"),
                     lpst->wYear,
                     lpst->wMonth,
                     lpst->wDayOfWeek,
                     lpst->wDay,
                     lpst->wHour,
                     lpst->wMinute,
                     lpst->wSecond,
                     lpst->wMilliseconds );
    #endif
        
        // NOTE : Because our alarm only has a 1-day rollover, the full alarm 
        // time needs to be stored and compared on alarm interrupts to see if 
        // it is at the correct day.
        RTC_AlarmTime = *lpst;    Year = lpst->wYear % 100;    // Read the update in progress bit, wait for it to be clear. This bit 
        // will be set once per second for about 2us (Undoc. PC, page 897)
        do {
            cStatusRegA = CMOS_Read( RTC_STATUS_A);
        } while ( cStatusRegA & RTC_SRA_UIP );    // Disable updates while the values are changed
        cStatusRegB = CMOS_Read( RTC_STATUS_B );
        cStatusRegB |= RTC_SRB_UPDT;
        CMOS_Write( RTC_STATUS_B, cStatusRegB );    if ( !(cStatusRegB & RTC_SRB_DM) ) {
            // BCD Mode
            CMOS_Write( RTC_ALRM_HOUR,     (BYTE)(CREATE_BCD(lpst->wHour))); 
            CMOS_Write( RTC_ALRM_MINUTE,   (BYTE)(CREATE_BCD(lpst->wMinute))); 
            CMOS_Write( RTC_ALRM_SECOND,   (BYTE)(CREATE_BCD(lpst->wSecond))); 
        } else {
            // Binary mode
            CMOS_Write( RTC_ALRM_HOUR, (UCHAR)lpst->wHour); 
            CMOS_Write( RTC_ALRM_MINUTE, (UCHAR)lpst->wMinute); 
            CMOS_Write( RTC_ALRM_SECOND, (UCHAR)lpst->wSecond); 
        }    // Enable alarm interrupt and reenable updates
        cStatusRegB = (cStatusRegB | RTC_SRB_AI) & ~RTC_SRB_UPDT;
        CMOS_Write( RTC_STATUS_B, cStatusRegB );    return( TRUE );
    }看看人家外国人都可以写出来啦..可惜是在WINCE下面的,有谁知道这些RTC_SRV_UPDT,RTC_SRB_AI的值吗???高手在哪里???
      

  20.   

    我的电脑主板和BIOS支持定时开机。也就是说硬件支持本身没什么问题,也已经在一些产品上实现了。如果按照这个思路,要做到楼主说的“软件定时开机”的问题,就变成用软件来更改CMOS里面的设置的问题了。我提到病毒,并不是说病毒寄存在CMOS中(除非硬件产商留了足够的空间给病毒),而是说病毒更改CMOS导致故障。因此,关键在于你的软件能否访问并更改CMOS(中的定时开机部分的设置参数)。另外,带NetBios的网卡和部分主板支持 Lan wakeup 和 Lan Boot,也就是说通过局域网“唤醒”计算机。呵呵,“用服务器来启动办公室的一群计算机?”
      

  21.   

    对不起,没看中间的内容。你的问题准确地说是:寻市面上主流BIOS的详细编程资料。
    不知道 AIM Phonix 这几家BIOS研发商网站上有没有?另外,不知道在 CMOS 写保护的情况下,是否可以通过软件更改定时开机参数?(否则要担心招来恶意代码的破坏了)
      

  22.   

    楼主,借一下你的人气!!!
    http://expert.csdn.net/Expert/topic/2102/2102444.xml?temp=.8663904
      

  23.   

    TO: lingdove(灵鸽)可以帮你忙,但是条件得改,1000 分解决不了问题
      

  24.   

    有意思,但是我的机子不支持定时开机:(
    你可以自己设置好,再读出来看看哪些不一样了。
    看你给出的程序,也就是对端口70、71的操作。
    循环给70送00-ff,看看71的数据都是什么,然后手工在coms设置后,在来一边,看看数据有什么不同。
      

  25.   

    TO W32API(李诚),
    你真的能解决吗??不同的主板不同的BIOS,设置都可能会不同哦...
    好啊..那要多少啊???
      

  26.   

    这个还是可以的,你知道现在 ATX 的机器在断电以后都处于 Stand by 状态,嘿嘿,我现在在做的东西也要我写这部分代码,刚好合适。
    有问题发 EMAIL 给我 [email protected]
      

  27.   

    手头没有汇编书
    i/o port 070h和071h 是cmos的端口吗 还有cf8h和cfch端口  有趣 回去查查
      

  28.   

    CSDN的硬件论坛远没有VC这么火
      

  29.   

    硬件是管做,每个人都会有自己的圈子,出了这个圈子,那问题就基本上是天书。
    所以,习惯用 Tel 和 Email 联系了。
      

  30.   

    修改cmos中开机时间的byte应该就可以了吧?
    用汇编写cmos端口的对应字段就可以了吧?