windows10 快速启动

Windows10新增加了一个功能:快速启动,而且默认状态是打开的,根据微软的说法,快速启动可以有效提高启动速度,快速启动等同于休眠。
控制面板——硬件和声音——电源选项——左侧选择电源按钮的功能——更改当前不可用的设置,取消启用快速启动复选框即可。
其实,快速启动的原理并不复杂,即关机时将系统内核、相关模块和驱动写入硬盘存放起来,下次启动直接加载,速度自然变快了。
当打开快速启动时,关机后再开机时win10不会完全重新加载驱动,导致初始化芯片失败,在驱动中新加一个电源管理函数,把改变电源到PowerDeviceD0 时再做一次加载驱动时要初始的芯片工作, 休眠与快启都能正常工作。

电源管理函数:DeviceDispatchSetPower,        // Power Set Power
    PowerDeviceD0  // Fully working state

void DeviceDispatchSetPower(IN PKSDEVICE Device,IN PIRP Irp,DEVICE_POWER_STATE to,DEVICE_POWER_STATE from)
{
    PDEVICE_EXTENSION devext;
    devext = (PDEVICE_EXTENSION)Device->Context;
    if( to == from )
        return;
    
    if(to == PowerDeviceD3) //low power state
    {
        KdPrint(("dispatchSetPower:low power state\n"));
        devext->_power_state = to;
    }
    else if(to == PowerDeviceD0 ) // Fully working state
    {
        devext->_power_state = to;
        KdPrint(("dispatchSetPower:Fully working state\n"));
        wrReg32(devext, (INT_BASEADDRESS + INT_EN ), 0x00000001); //enbale INTERRUPT
        wrReg32(devext, (INT_BASEADDRESS + I2C0_MASK ), 0x00000001);
        wrReg32(devext, (INT_BASEADDRESS + I2C1_MASK ), 0x00000001);
        wrReg32(devext, (INT_BASEADDRESS + I2C2_MASK ), 0x00000001);
        wrReg32(devext, (INT_BASEADDRESS + I2C3_MASK ), 0x00000001);

        init_i2c(devext,I2C0_BASEADDRESS);
        init_i2c(devext,I2C1_BASEADDRESS);
        init_i2c(devext,I2C2_BASEADDRESS);
        init_i2c(devext,I2C3_BASEADDRESS);
    }
    else
        KdPrint(("unsupported device state requested\n"));


}
 

你可能感兴趣的:(windows)