Opc.Ua.Win32.Decode_FILETIME C# (CSharp) Method

Decode_FILETIME() public static method

Decodes a WIN32 FILETIME.
public static Decode_FILETIME ( System filetime ) : System.DateTime
filetime System
return System.DateTime
        public static DateTime Decode_FILETIME(System.Runtime.InteropServices.ComTypes.FILETIME filetime)
        {
            // check for invalid value.
            if (filetime.dwHighDateTime < 0)
            {
                return DateTime.MinValue;
            }

            // convert FILETIME structure to a 64 bit integer.
            long buffer = (long)filetime.dwHighDateTime;

            if (buffer < 0)
            {
                buffer += ((long)UInt32.MaxValue + 1);
            }

            long ticks = (buffer << 32);

            buffer = (long)filetime.dwLowDateTime;

            if (buffer < 0)
            {
                buffer += ((long)UInt32.MaxValue + 1);
            }

            ticks += buffer;

            // check for invalid value.
            if (ticks == 0)
            {
                return DateTime.MinValue;
            }

            // adjust for WIN32 FILETIME base.			
            return new DateTime(1601, 1, 1).Add(new TimeSpan(ticks));
        }

Usage Example

コード例 #1
0
ファイル: X509CRL.cs プロジェクト: benvert/pfe
        private void Initialize(byte[] crl)
        {
            m_bufferSize = crl.Length;
            m_pBuffer    = Marshal.AllocHGlobal(m_bufferSize);
            Marshal.Copy(crl, 0, m_pBuffer, m_bufferSize);
            SaveUnmanagedPointer(m_pBuffer);

            m_signedCrl = Win32.Decode_CERT_SIGNED_CONTENT_INFO(m_pBuffer, crl.Length);
            Win32.CRL_INFO info = Win32.Decode_CERT_INFO(m_signedCrl.ToBeSigned.pbData, m_signedCrl.ToBeSigned.cbData);

            Issuer         = Win32.Decode_CERT_NAME_BLOB(info.Issuer);
            UpdateTime     = Win32.Decode_FILETIME(info.ThisUpdate);
            NextUpdateTime = Win32.Decode_FILETIME(info.NextUpdate);
        }