Пример #1
0
        internal FILEDESCRIPTOR ToFileDescriptor()
        {
            FILEDESCRIPTOR filedescriptor = new FILEDESCRIPTOR();

            filedescriptor.dwFlags   = FileDescriptorFlags.FD_FILESIZE;
            filedescriptor.cFileName = this.Name;
            if (this.Contents != null)
            {
                NativeUtilities.GetWords(this.Contents.LongLength, out filedescriptor.nFileSizeHigh, out filedescriptor.nFileSizeLow);
            }
            if (this.Attributes != FileAttributes.Normal)
            {
                filedescriptor.dwFileAttributes = (uint)this.Attributes;
                filedescriptor.dwFlags         |= FileDescriptorFlags.FD_ATTRIBUTES;
            }
            if (this.CreationTime != DateTime.MinValue)
            {
                NativeUtilities.GetWords(this.CreationTime.ToFileTime(), out filedescriptor.ftCreationTime.dwHighDateTime, out filedescriptor.ftCreationTime.dwLowDateTime);
                filedescriptor.dwFlags |= FileDescriptorFlags.FD_CREATETIME;
            }
            if (this.LastAccessTime != DateTime.MinValue)
            {
                NativeUtilities.GetWords(this.LastAccessTime.ToFileTime(), out filedescriptor.ftLastAccessTime.dwHighDateTime, out filedescriptor.ftLastAccessTime.dwLowDateTime);
                filedescriptor.dwFlags |= FileDescriptorFlags.FD_ACCESSTIME;
            }
            if (this.LastWriteTime != DateTime.MinValue)
            {
                NativeUtilities.GetWords(this.LastWriteTime.ToFileTime(), out filedescriptor.ftLastWriteTime.dwHighDateTime, out filedescriptor.ftLastWriteTime.dwLowDateTime);
                filedescriptor.dwFlags |= FileDescriptorFlags.FD_WRITESTIME;
            }
            return(filedescriptor);
        }
Пример #2
0
        internal static VirtualFile FromFileDescriptor(FILEDESCRIPTOR fd)
        {
            VirtualFile virtualFile = new VirtualFile();

            virtualFile.Name = fd.cFileName;
            if ((fd.dwFlags & FileDescriptorFlags.FD_ATTRIBUTES) == FileDescriptorFlags.FD_ATTRIBUTES)
            {
                virtualFile.Attributes = (FileAttributes)fd.dwFileAttributes;
            }
            if ((fd.dwFlags & FileDescriptorFlags.FD_CREATETIME) == FileDescriptorFlags.FD_CREATETIME)
            {
                virtualFile.CreationTime = NativeUtilities.ToDateTime(fd.ftCreationTime);
            }
            if ((fd.dwFlags & FileDescriptorFlags.FD_ACCESSTIME) == FileDescriptorFlags.FD_ACCESSTIME)
            {
                virtualFile.LastAccessTime = NativeUtilities.ToDateTime(fd.ftLastAccessTime);
            }
            if ((fd.dwFlags & FileDescriptorFlags.FD_WRITESTIME) == FileDescriptorFlags.FD_WRITESTIME)
            {
                virtualFile.LastWriteTime = NativeUtilities.ToDateTime(fd.ftLastWriteTime);
            }
            return(virtualFile);
        }