亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dst.cpp

?? 該代碼壓縮包只為需要研究CE下的任務(wù)管理器的實(shí)現(xiàn)而提供的。某些通用的頭文件沒(méi)有包含在其中
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*---------------------------------------------------------------------------*\
 *  module: dst.cpp
 *  purpose: DST support.  Need to handle the following 3 scenarios
 *          1)  DST turns on/off when system is running
 *          2)  DST turns on/off when system is suspended
 *          3)  DST turns on/off when system is powered off
 *
\*---------------------------------------------------------------------------*/

#ifndef NODSTSAMPLE   //don't use this if NODSTSAMPLE is defined

#ifdef TASKMANDSTSAMPLE
#include "windows.h"
#include "minshell.h"
#else
#include "explorer.h"
#endif  //TASKMANDSTSAMPLE

#include <notify.h>

//keep these consistant with names in public\wceshellfe\oak\ctlpnl\cplmain\regcpl.h
#define RK_CLOCK        TEXT("Software\\Microsoft\\Clock")
#define RV_INDST        TEXT("HomeDST")  //are we in DST?
#define RV_AUTODST      TEXT("AutoDST")  //do we auto-adjust DST?
#define RV_DSTUI        TEXT("ShowDSTUI")  //do we show a message at dst change?

#define DSTEVENT          _T("ShellDSTEvent")
#define DSTTZEVENT        _T("DSTTzChange")
#define DSTTIMEEVENT        _T("DSTTimeChange")

#define DSTNOTIFICATION   _T("\\\\.\\Notifications\\NamedEvents\\ShellDSTEvent")
#define DSTTIMEZONENOTIFICATION _T("\\\\.\\Notifications\\NamedEvents\\DSTTzChange")
#define DSTTIMENOTIFICATION _T("\\\\.\\Notifications\\NamedEvents\\DSTTimeChange")

#define NUMDSTEVENTS 3
#define TZCHANGEEVENT 0
#define TIMECHANGEEVENT 1
#define DSTCHANGEEVENT 2 // This event must be last so WaitForMultipleObjects algorithm works (see DST_WaitForEvents)

#define MAX_DSTMSGLEN 256
#define MAX_DSTTITLELEN 64

// FILETIME (100-ns intervals) to minutes (10 x 1000 x 1000 x 60)
#define FILETIME_TO_MINUTES (10 * 1000 * 1000 * 60)

#define FIRST_OF_MONTH      1
#define SECOND_OF_MONTH     2
#define THIRD_OF_MONTH      3
#define FOURTH_OF_MONTH     4
#define LAST_OF_MONTH       5

const int AccumDaysByMonth[13] =
{ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };

DWORD g_dwTime = TIME_ZONE_ID_STANDARD;


/*++

    
Routine Description:
    Determines whether the current date and time is in daylight
    or standard time, and notifies the kernel.

    Kernel doesn't currently update this in all cases
    Manually take care of it to be safe and ensure that subsequent calls 
    to GetTimeZoneInformation return the correct value

    
Arguments:
    none
    
Return Value:
    current timezone value (same as return values for GetTimeZoneInformation
    
--*/
void  DST_SetDaylightOrStandardTime(void)
{
    TIME_ZONE_INFORMATION tzi;
    DWORD dwTZ = GetTimeZoneInformation(&tzi);

    // If the system supports DST verify that the kernel returned the correct
    // value, otherwise make sure the kerel has us in SDT
    if (LocaleSupportsDST(&tzi))
    {
        SYSTEMTIME curTime;
        LONGLONG  llStandard = 0, llDaylight = 0, llNow = 0;

        GetLocalTime(&curTime);

        //fix up the date structs if necessary
        if (0 == tzi.StandardDate.wYear)
            DST_DetermineChangeDate(&tzi.StandardDate);
        if (0 == tzi.DaylightDate.wYear)
            DST_DetermineChangeDate(&tzi.DaylightDate);

        //convert so we can do the math
        VERIFY(SystemTimeToFileTime(&tzi.StandardDate, (FILETIME *)&llStandard));
        VERIFY(SystemTimeToFileTime(&tzi.DaylightDate, (FILETIME *)&llDaylight));
        VERIFY(SystemTimeToFileTime(&curTime, (FILETIME *)&llNow));

        //the greater difference determines which zone we are in   
        if ((llStandard - llNow) < (llDaylight - llNow))
        {
            DEBUGMSG(ZONE_DST, (_T("DST:  Notifying kernel that we are in Daylight time.  GetTimeZoneInformation currently thinks we are in %s time."), 
                     TIME_ZONE_ID_DAYLIGHT  == dwTZ ? _T("Daylight") : _T("Standard")));
            SetDaylightTime(TRUE);
            g_dwTime = TIME_ZONE_ID_DAYLIGHT;
        }
        else
        {
            DEBUGMSG(ZONE_DST, (_T("DST:  Notifying kernel that we are in Standard time.  GetTimeZoneInformation currently thinks we are in %s time."), 
                     TIME_ZONE_ID_DAYLIGHT  == dwTZ ? _T("Daylight") : _T("Standard")));
            SetDaylightTime(FALSE);
            g_dwTime = TIME_ZONE_ID_STANDARD;
        }
    }
    else
    {
        ASSERT(TIME_ZONE_ID_STANDARD == dwTZ);
        if (TIME_ZONE_ID_STANDARD != dwTZ)
            SetDaylightTime(FALSE);
        g_dwTime = TIME_ZONE_ID_STANDARD;
    }
}


/*++
Routine Description:
    'main' function for DST.  Called from shell init, and re-entered from DST_WaitForEvent.
    
Arguments:
    none
    
Return Value:
    none
    
--*/
void DST_Init(void)
{
    //need to know from the start if we are in standard or daylight time
    DST_SetDaylightOrStandardTime();
    for (;;)
    {
        HANDLE hDSTEvents[NUMDSTEVENTS];
        hDSTEvents[TZCHANGEEVENT] = DST_SetTimezoneChangeEvent();
        hDSTEvents[TIMECHANGEEVENT] = DST_SetTimeChangeEvent();
        hDSTEvents[DSTCHANGEEVENT] = DST_SetDSTEvent(); // This can be NULL if we are in a non-DST timezone

        if (NULL == hDSTEvents[TZCHANGEEVENT])
        {
            DEBUGCHK( _T("DST:  Failed to set TZ change Event"));
            break;
        }
        if (NULL == hDSTEvents[TIMECHANGEEVENT])
        {
            DEBUGCHK( _T("DST:  Failed to set Time change Event"));
            break;
        }

        DST_WaitForEvents(hDSTEvents);
    } 

}    


/*++
Routine Description:
    Determines if we should auto-adjust for DST
    
Arguments:
    none
    
Return Value:
    TRUE if we want to auto adjust
    FALSE if we don't want to auto adjust
    
--*/
BOOL  DST_Auto(void)
{
    DWORD ret = 0;
    HKEY hKey = NULL;
    if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, RK_CLOCK, 0, 0, &hKey))
    {
        DWORD dwSize = sizeof(DWORD);
        RegQueryValueEx(hKey, RV_AUTODST, 0, NULL, (LPBYTE)&ret, &dwSize);
        RegCloseKey(hKey);
    }
#ifdef DEBUG
    if (ret)
    {
        DEBUGMSG(ZONE_DST, ( _T("DST:  Auto change for DST is on")));
    } 
    else
    {
        DEBUGMSG(ZONE_DST, ( _T("DST:  Auto change for DST is off")));
    }
#endif //DEBUG

    return (BOOL)ret;
}



/*++
Routine Description:
    Determines if we should show a mesage for DST change
    
Arguments:
    none
    
Return Value:
    TRUE if we want to show a message
    FALSE if we don't want to show a message
    
--*/
BOOL  DST_ShowMessage(void)
{
    DWORD ret = 0;
    HKEY hKey = NULL;
    if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, RK_CLOCK, 0, 0, &hKey))
    {
        DWORD dwSize = sizeof(DWORD);
        RegQueryValueEx(hKey, RV_DSTUI, 0, NULL, (LPBYTE)&ret, &dwSize);
        RegCloseKey(hKey);
    }
#ifdef DEBUG
    if (ret)
    {
        DEBUGMSG(ZONE_DST, ( _T("DST:  Show Message option for DST is on")));
    } 
    else
    {
        DEBUGMSG(ZONE_DST, ( _T("DST:  Show Message option for DST is off")));
    }
#endif //DEBUG

    return (BOOL)ret;
}

/*++

    
Routine Description:
    Sets Event to be notified when timezone changes
    
Arguments:
    none
    
Return Value:
    HANDLE to timezone event
    
--*/
HANDLE DST_SetTimezoneChangeEvent(void)
{
    HANDLE hTZEvent = CreateEvent(NULL, FALSE, FALSE, DSTTZEVENT);
    if (hTZEvent)
    {
        if (!CeRunAppAtEvent(DSTTIMEZONENOTIFICATION,
                             NOTIFICATION_EVENT_TZ_CHANGE))
        {
            CloseHandle(hTZEvent);
            hTZEvent = NULL;
        }
    }
    return hTZEvent;
}

/*++

    
Routine Description:
    Sets Event to be notified when time changes
    
Arguments:
    none
    
Return Value:
    HANDLE to timezone event
    
--*/
HANDLE DST_SetTimeChangeEvent(void)
{
    HANDLE hTimeEvent = CreateEvent(NULL, FALSE, FALSE, DSTTIMEEVENT);
    if (hTimeEvent)
    {
        if (!CeRunAppAtEvent(DSTTIMENOTIFICATION,
                             NOTIFICATION_EVENT_TIME_CHANGE))
        {
            CloseHandle(hTimeEvent);
            hTimeEvent = NULL;
        }
    }
    return hTimeEvent;
}


/*++
Routine Description:
    Sets the DST Event 
    
Arguments:
    none
    
Return Value:
    Handle to event to be triggered when daylight time turns on (or off)
    
--*/
HANDLE DST_SetDSTEvent (void)
{
    HANDLE hEvent = NULL;
    BOOL bEvent = FALSE;
    TIME_ZONE_INFORMATION tzi = {0};
    SYSTEMTIME curTime, notificationTime;
    LONGLONG llNow = 0, llNotification = 0;

    DWORD dwTZ = GetTimeZoneInformation(&tzi);

    // Only create the event if the locale supports DST
    if (!LocaleSupportsDST(&tzi))
        return NULL;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合999| 亚洲电影一级片| 一区二区三区在线免费视频| 日韩激情一区二区| 91在线观看成人| 欧美sm极限捆绑bd| 亚洲一区二区三区小说| 成人免费视频一区| 日韩免费成人网| 亚洲成人先锋电影| 91黄色免费看| 国产精品毛片高清在线完整版| 免费在线观看一区二区三区| 色乱码一区二区三区88| 国产精品午夜免费| 久久国产综合精品| 国产精品美女视频| 久久国产尿小便嘘嘘| 欧美另类videos死尸| 亚洲精品高清视频在线观看| 成人在线一区二区三区| 久久久久九九视频| 五月综合激情日本mⅴ| 91色porny在线视频| 日本一区二区久久| 国产一区二区精品久久99| 欧美精品aⅴ在线视频| 亚洲国产精品精华液网站| 欧美优质美女网站| 国产专区欧美精品| 日韩一级二级三级| 青草国产精品久久久久久| av一区二区不卡| 国产精品女主播av| 日韩午夜电影在线观看| 亚洲日本免费电影| 色综合久久久久网| 一区二区三区国产精品| 在线观看91精品国产入口| 一区二区激情视频| 日本久久电影网| 午夜精品福利一区二区三区蜜桃| 欧美最新大片在线看 | 亚洲另类在线制服丝袜| eeuss鲁一区二区三区| 1区2区3区国产精品| 91丨九色丨黑人外教| 夜夜爽夜夜爽精品视频| 欧美日本免费一区二区三区| 视频一区在线视频| 精品对白一区国产伦| 国产精品一区专区| 国产精品久久久爽爽爽麻豆色哟哟 | 精品久久久久久亚洲综合网| 国产乱色国产精品免费视频| 欧美激情中文字幕一区二区| 成人av网址在线| 一区二区三区视频在线看| 欧美一区二区三区电影| 国产精品99精品久久免费| 亚洲男人的天堂一区二区 | 国产一区二区福利| 亚洲免费高清视频在线| 91精品国产综合久久香蕉麻豆| 久久精品国产77777蜜臀| 国产精品蜜臀在线观看| 欧美群妇大交群的观看方式| 国产乱子伦一区二区三区国色天香| 国产精品素人视频| 欧美日韩日日骚| 国产高清精品网站| 午夜国产精品一区| 欧美国产一区二区| 欧美美女激情18p| 国产成人亚洲精品狼色在线 | 亚洲国产精品久久久男人的天堂 | 视频一区视频二区中文字幕| 久久久久久久电影| 欧美羞羞免费网站| 成人动漫精品一区二区| 琪琪一区二区三区| 亚洲精品日日夜夜| 久久精品综合网| 欧美一区二区福利视频| jlzzjlzz亚洲日本少妇| 美女视频黄 久久| 亚洲一区二区三区不卡国产欧美| 精品国产免费久久| 欧美日韩国产a| 日韩视频一区二区三区 | 国产精品乱码久久久久久| 欧美日韩dvd在线观看| www.成人网.com| 九一久久久久久| 视频一区中文字幕| 一卡二卡三卡日韩欧美| 国产欧美日韩卡一| 精品少妇一区二区三区日产乱码| 欧美视频一区二区三区在线观看| 大胆亚洲人体视频| 国产东北露脸精品视频| 精品一区二区三区久久| 亚洲成a人片在线不卡一二三区| 中文字幕在线观看一区| 国产日产欧产精品推荐色| 日韩欧美视频在线| 91.麻豆视频| 精品视频999| 欧美视频中文字幕| 欧美午夜片在线看| 欧美午夜理伦三级在线观看| 99re视频精品| 99热这里都是精品| 93久久精品日日躁夜夜躁欧美| 国产成人啪免费观看软件| 国产丶欧美丶日本不卡视频| 国产精品影音先锋| 成人综合在线观看| jlzzjlzz欧美大全| 91久久精品国产91性色tv| 在线观看一区日韩| 欧美在线观看视频在线| 欧美日韩国产精品自在自线| 884aa四虎影成人精品一区| 911精品产国品一二三产区| 欧美一区二区大片| 26uuu另类欧美| 国产蜜臀97一区二区三区| 国产精品国产三级国产有无不卡 | 国产成人福利片| 高清成人在线观看| 91色综合久久久久婷婷| 在线观看免费一区| 日韩一级成人av| 国产嫩草影院久久久久| 一区二区三区在线观看视频| 亚洲国产日韩在线一区模特| 日韩精品乱码免费| 国产精品一品二品| 色噜噜狠狠成人中文综合| 555www色欧美视频| 国产日产欧美一区| 一二三四社区欧美黄| 日韩1区2区3区| 国产69精品久久777的优势| 色国产精品一区在线观看| 7777精品伊人久久久大香线蕉超级流畅| 91精品国产一区二区人妖| 国产日韩av一区二区| 亚洲综合小说图片| 国产最新精品免费| 一本大道久久a久久综合婷婷| 在线不卡的av| 国产精品久久久久久户外露出| 亚洲电影中文字幕在线观看| 久久电影网电视剧免费观看| 99久久亚洲一区二区三区青草| 欧美日本视频在线| 国产精品高潮呻吟久久| 全国精品久久少妇| 99精品一区二区三区| 亚洲另类春色国产| 国产精品一区一区三区| 欧美丝袜自拍制服另类| 欧美韩国一区二区| 日韩电影在线观看电影| av在线播放成人| 日韩女优制服丝袜电影| 亚洲一区二区在线播放相泽| 国产成人精品免费在线| 欧美一区在线视频| 亚洲综合成人在线视频| 粉嫩在线一区二区三区视频| 日韩一区二区免费电影| 一区二区三区资源| 成人一区二区三区在线观看 | 天天综合日日夜夜精品| av激情亚洲男人天堂| 精品国产sm最大网站免费看| 亚洲成a天堂v人片| 色老头久久综合| 国产精品高潮呻吟| 国产成人免费av在线| 精品va天堂亚洲国产| 免费观看30秒视频久久| 欧美日韩精品久久久| 一个色综合av| 色综合天天天天做夜夜夜夜做| 日本一二三不卡| 国产精品中文有码| 久久久久亚洲蜜桃| 国内精品视频一区二区三区八戒| 91精品国产91久久久久久一区二区 | 制服丝袜av成人在线看| 亚洲午夜久久久久久久久久久| 一本久道久久综合中文字幕| 亚洲欧美自拍偷拍| 99国产精品久| 亚洲图片你懂的| 日本精品免费观看高清观看|