⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 systemtimeutils.cpp

📁 一个WinCE6。0下的IP phone的源代码
💻 CPP
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#include "SystemTimeUtils.h"

ULONGLONG SystemTimeToUll(const SYSTEMTIME *pst)
{
    PREFAST_ASSERT(pst);
    FILETIME ft = {0};
    SystemTimeToFileTime(pst, &ft);

    return ((((ULONGLONG)ft.dwHighDateTime) << (sizeof(DWORD)*8)) | ft.dwLowDateTime);
}

BOOL operator==(const SYSTEMTIME &stA, const SYSTEMTIME &stB)
{
    return SystemTimeToUll(&stA) == SystemTimeToUll(&stB);
}

BOOL operator!=(const SYSTEMTIME &stA, const SYSTEMTIME &stB)
{
    return !(stA == stB);
}

BOOL operator<(const SYSTEMTIME &stA, const SYSTEMTIME &stB)
{
    return (SystemTimeToUll(&stA) < SystemTimeToUll(&stB));
}

BOOL operator>(const SYSTEMTIME &stA, const SYSTEMTIME &stB)
{
    return (SystemTimeToUll(&stB) < SystemTimeToUll(&stA));
}

const ULONGLONG HUNDRED_NS_PER_HOUR  =
    (ULONGLONG)60 *
    (ULONGLONG)60 * 
    (ULONGLONG)1000 * 
    (ULONGLONG)10000;
    
VOID IncrementTime(SYSTEMTIME *pstOut, const SYSTEMTIME *pstToInc, signed int nHours)
{
    PREFAST_ASSERT(pstToInc && pstOut);
    ULONGLONG ullOut = SystemTimeToUll(pstToInc);

    ullOut += (signed long long)(nHours * HUNDRED_NS_PER_HOUR);

    FILETIME ft = {0};
    ft.dwHighDateTime = (DWORD)(ullOut >> (sizeof(DWORD)*8));
    ft.dwLowDateTime  = (DWORD)(ullOut);
    FileTimeToSystemTime(&ft, pstOut);
}

DWORD HourDifference(const SYSTEMTIME *pstEnd, const SYSTEMTIME *pstStart)
{
    PREFAST_ASSERT(pstEnd && pstStart);
    ASSERT(*pstEnd > *pstStart);

    ULONGLONG ullDiff = SystemTimeToUll(pstEnd) - SystemTimeToUll(pstStart);
    ullDiff /= HUNDRED_NS_PER_HOUR;

    return (DWORD)ullDiff;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -