windows-nt/Source/XPSP1/NT/admin/wmi/wbem/winmgmt/wbemcomn/cwbemtime.h
2020-09-26 16:20:57 +08:00

135 lines
3.3 KiB
C++

/*++
Copyright (C) 1996-2001 Microsoft Corporation
Module Name:
CWBEMTIME.H
Abstract:
Time helper
History:
--*/
#ifndef __WBEM_TIME__H_
#define __WBEM_TIME__H_
#include "corepol.h"
#define WBEMTIME_LENGTH 25
class POLARITY CWbemInterval
{
protected:
DWORD m_dwMs;
CWbemInterval(DWORD dwMs) : m_dwMs(dwMs){}
friend class CWbemTime;
public:
CWbemInterval() : m_dwMs(0){}
static CWbemInterval GetInfinity() {return CWbemInterval(INFINITE);}
BOOL IsFinite() const {return m_dwMs != INFINITE;}
BOOL IsZero() const {return m_dwMs == 0;}
DWORD GetMilliseconds() const {return m_dwMs;}
DWORD GetSeconds() const {return m_dwMs/1000;}
void SetMilliseconds(DWORD dwMs) {m_dwMs = dwMs;}
BOOL operator<(const CWbemInterval Other)
{return m_dwMs < Other.m_dwMs;}
BOOL operator>(const CWbemInterval Other)
{return m_dwMs > Other.m_dwMs;}
CWbemInterval operator*(double dblFactor) const
{return CWbemInterval((DWORD)(m_dwMs * dblFactor));}
CWbemInterval operator+(const CWbemInterval Other) const
{return CWbemInterval(m_dwMs + Other.m_dwMs);}
void operator+=(const CWbemInterval Other)
{m_dwMs += Other.m_dwMs;}
};
#define I64_INFINITY 0x7FFFFFFFFFFFFFFF
class POLARITY CWbemTimeSpan
{
private:
ULONGLONG m_Time;
friend class CWbemTime;
public:
CWbemTimeSpan (
int iDays ,
int iHours ,
int iMinutes ,
int iSeconds ,
int iMSec=0 ,
int iUSec=0,
int iNSec=0
) ;
};
class POLARITY CWbemTime
{
protected:
__int64 m_i64;
CWbemTime(__int64 i64) : m_i64(i64){}
friend class CWbemInterval;
public:
CWbemTime() : m_i64(0){}
CWbemTime(const CWbemTime& Other) : m_i64(Other.m_i64){}
void operator=(const CWbemTime& Other)
{
m_i64 = Other.m_i64;
}
static CWbemTime GetCurrentTime();
static CWbemTime GetInfinity() {return CWbemTime(I64_INFINITY);}
static CWbemTime GetZero() {return CWbemTime(0);}
BOOL SetSystemTime(const SYSTEMTIME& st);
BOOL SetFileTime(const FILETIME& ft);
BOOL GetSYSTEMTIME ( SYSTEMTIME *pst ) const;
BOOL GetFILETIME ( FILETIME *pst ) const;
__int64 Get100nss() const {return m_i64;}
void Set100nss(__int64 i64) {m_i64 = i64;}
CWbemInterval RemainsUntil(const CWbemTime& Other) const;
BOOL IsFinite() const {return m_i64 != I64_INFINITY;}
BOOL IsZero() const {return m_i64 == 0;}
CWbemTime operator+ ( const CWbemTimeSpan &uAdd ) const ;
CWbemTime operator- ( const CWbemTimeSpan &sub ) const;
BOOL operator <(const CWbemTime& Other) const
{return m_i64 < Other.m_i64;}
BOOL operator >(const CWbemTime& Other) const
{return m_i64 > Other.m_i64;}
BOOL operator <=(const CWbemTime& Other) const
{return m_i64 <= Other.m_i64;}
BOOL operator >=(const CWbemTime& Other) const
{return m_i64 >= Other.m_i64;}
CWbemTime operator+(const CWbemInterval& ToAdd) const;
CWbemInterval operator-(const CWbemTime& ToSubtract) const
{return ToSubtract.RemainsUntil(*this);}
BOOL SetDMTF(LPCWSTR wszText);
BOOL GetDMTF( BOOL bLocal, DWORD dwBuffLen, LPWSTR pwszBuff );
static LONG GetLocalOffsetForDate(const SYSTEMTIME *pst);
};
#endif