private MemoryStream GetFileDescriptor() { MemoryStream fileDescriptorMemoryStream = new MemoryStream(); // Write out the FILEGROUPDESCRIPTOR.cItems value fileDescriptorMemoryStream.Write(BitConverter.GetBytes(1), 0, sizeof(UInt32)); FILEDESCRIPTOR fileDescriptor = new FILEDESCRIPTOR(); fileDescriptor.cFileName = mFileName; if (mContentLength > 0) { fileDescriptor.nFileSizeHigh = (UInt32)(mContentLength >> 32); fileDescriptor.nFileSizeLow = (UInt32)(mContentLength & 0xFFFFFFFF); fileDescriptor.dwFlags = FileDescriptorFlags.FD_FILESIZE | FileDescriptorFlags.FD_PROGRESSUI; } else { fileDescriptor.dwFlags = FileDescriptorFlags.FD_PROGRESSUI; } // Marshal the FileDescriptor structure into a byte array and write it to the MemoryStream. Int32 fileDescriptorSize = Marshal.SizeOf(fileDescriptor); IntPtr fileDescriptorPointer = Marshal.AllocHGlobal(fileDescriptorSize); Marshal.StructureToPtr(fileDescriptor, fileDescriptorPointer, true); Byte[] fileDescriptorByteArray = new Byte[fileDescriptorSize]; Marshal.Copy(fileDescriptorPointer, fileDescriptorByteArray, 0, fileDescriptorSize); Marshal.FreeHGlobal(fileDescriptorPointer); fileDescriptorMemoryStream.Write(fileDescriptorByteArray, 0, fileDescriptorByteArray.Length); return(fileDescriptorMemoryStream); }
private MemoryStream GetFileDescriptor(byte[] si) { MemoryStream FileDescriptorMemoryStream = new MemoryStream(); FileDescriptorMemoryStream.Write(BitConverter.GetBytes(1), 0, sizeof(UInt32)); FILEDESCRIPTOR FileDescriptor = new FILEDESCRIPTOR(); FileDescriptor.cFileName = Path.GetFileName(name); Int64 FileWriteTimeUtc = DateTime.Now.Millisecond; FileDescriptor.ftLastWriteTime.dwHighDateTime = (Int32)(FileWriteTimeUtc >> 32); FileDescriptor.ftLastWriteTime.dwLowDateTime = (Int32)(FileWriteTimeUtc & 0xFFFFFFFF); FileDescriptor.nFileSizeHigh = (UInt32)(si.Length >> 32); FileDescriptor.nFileSizeLow = (UInt32)(si.Length & 0xFFFFFFFF); FileDescriptor.dwFlags = NativeMethods.FD_PROGRESSUI; // Marshal the FileDescriptor structure into a byte array and write it to the MemoryStream. Int32 FileDescriptorSize = Marshal.SizeOf(FileDescriptor); IntPtr FileDescriptorPointer = Marshal.AllocHGlobal(FileDescriptorSize); Marshal.StructureToPtr(FileDescriptor, FileDescriptorPointer, true); Byte[] FileDescriptorByteArray = new Byte[FileDescriptorSize]; Marshal.Copy(FileDescriptorPointer, FileDescriptorByteArray, 0, FileDescriptorSize); Marshal.FreeHGlobal(FileDescriptorPointer); FileDescriptorMemoryStream.Write(FileDescriptorByteArray, 0, FileDescriptorByteArray.Length); return(FileDescriptorMemoryStream); }
private MemoryStream GetFileDescriptor(SelectedItem[] SelectedItems) { MemoryStream FileDescriptorMemoryStream = new MemoryStream(); // Write out the FILEGROUPDESCRIPTOR.cItems value FileDescriptorMemoryStream.Write(BitConverter.GetBytes(SelectedItems.Length), 0, sizeof(UInt32)); FILEDESCRIPTOR FileDescriptor = new FILEDESCRIPTOR(); foreach (SelectedItem si in SelectedItems) { FileDescriptor.cFileName = si.FileName; Int64 FileWriteTimeUtc = si.WriteTime.ToFileTimeUtc(); FileDescriptor.ftLastWriteTime.dwHighDateTime = (Int32)(FileWriteTimeUtc >> 32); FileDescriptor.ftLastWriteTime.dwLowDateTime = (Int32)(FileWriteTimeUtc & 0xFFFFFFFF); FileDescriptor.nFileSizeHigh = (UInt32)(si.FileSize >> 32); FileDescriptor.nFileSizeLow = (UInt32)(si.FileSize & 0xFFFFFFFF); FileDescriptor.dwFlags = NativeMethods.FD_WRITESTIME | NativeMethods.FD_FILESIZE | NativeMethods.FD_PROGRESSUI; // Marshal the FileDescriptor structure into a byte array and write it to the MemoryStream. Int32 FileDescriptorSize = Marshal.SizeOf(FileDescriptor); IntPtr FileDescriptorPointer = Marshal.AllocHGlobal(FileDescriptorSize); Marshal.StructureToPtr(FileDescriptor, FileDescriptorPointer, true); Byte[] FileDescriptorByteArray = new Byte[FileDescriptorSize]; Marshal.Copy(FileDescriptorPointer, FileDescriptorByteArray, 0, FileDescriptorSize); Marshal.FreeHGlobal(FileDescriptorPointer); FileDescriptorMemoryStream.Write(FileDescriptorByteArray, 0, FileDescriptorByteArray.Length); } FileDescriptorMemoryStream.Position = 0; return(FileDescriptorMemoryStream); }
/* public struct DragFileInfo { public string FileName; public string SourceFileName; public DateTime WriteTime; public Int64 FileSize; public DragFileInfo(string fileName) { FileName = Path.GetFileName(fileName); SourceFileName = fileName; WriteTime = DateTime.Now; FileSize = (new FileInfo(fileName)).Length; } }*/ public static MemoryStream GetFileDescriptor(string filename, string content) { MemoryStream stream = new MemoryStream(); stream.Write(BitConverter.GetBytes(1), 0, sizeof(UInt32)); FILEDESCRIPTOR fileDescriptor = new FILEDESCRIPTOR(); fileDescriptor.cFileName = filename; Int64 fileWriteTimeUtc = DateTime.Now.ToFileTimeUtc(); fileDescriptor.ftLastWriteTime.dwHighDateTime = (Int32)(fileWriteTimeUtc >> 32); fileDescriptor.ftLastWriteTime.dwLowDateTime = (Int32)(fileWriteTimeUtc & 0xFFFFFFFF); fileDescriptor.nFileSizeHigh = (UInt32)(content.Length >> 32); fileDescriptor.nFileSizeLow = (UInt32)(content.Length & 0xFFFFFFFF); fileDescriptor.dwFlags = FD_WRITESTIME | FD_FILESIZE | FD_PROGRESSUI; Int32 fileDescriptorSize = Marshal.SizeOf(fileDescriptor); IntPtr fileDescriptorPointer = Marshal.AllocHGlobal(fileDescriptorSize); Byte[] fileDescriptorByteArray = new Byte[fileDescriptorSize]; try { Marshal.StructureToPtr(fileDescriptor, fileDescriptorPointer, true); Marshal.Copy(fileDescriptorPointer, fileDescriptorByteArray, 0, fileDescriptorSize); } finally { Marshal.FreeHGlobal(fileDescriptorPointer); } stream.Write(fileDescriptorByteArray, 0, fileDescriptorByteArray.Length); return stream; }
public static MemoryStream GetFileDescriptor(DragFileInfo fileInfo) { MemoryStream stream = new MemoryStream(); stream.Write(BitConverter.GetBytes(1), 0, sizeof(UInt32)); FILEDESCRIPTOR fileDescriptor = new FILEDESCRIPTOR(); fileDescriptor.cFileName = fileInfo.FileName; Int64 fileWriteTimeUtc = fileInfo.WriteTime.ToFileTimeUtc(); fileDescriptor.ftLastWriteTime.dwHighDateTime = (Int32)(fileWriteTimeUtc >> 32); fileDescriptor.ftLastWriteTime.dwLowDateTime = (Int32)(fileWriteTimeUtc & 0xFFFFFFFF); fileDescriptor.nFileSizeHigh = (UInt32)(fileInfo.FileSize >> 32); fileDescriptor.nFileSizeLow = (UInt32)(fileInfo.FileSize & 0xFFFFFFFF); fileDescriptor.dwFlags = FD_WRITESTIME | FD_FILESIZE | FD_PROGRESSUI; Int32 fileDescriptorSize = Marshal.SizeOf(fileDescriptor); IntPtr fileDescriptorPointer = Marshal.AllocHGlobal(fileDescriptorSize); Byte[] fileDescriptorByteArray = new Byte[fileDescriptorSize]; try { Marshal.StructureToPtr(fileDescriptor, fileDescriptorPointer, true); Marshal.Copy(fileDescriptorPointer, fileDescriptorByteArray, 0, fileDescriptorSize); } finally { Marshal.FreeHGlobal(fileDescriptorPointer); } stream.Write(fileDescriptorByteArray, 0, fileDescriptorByteArray.Length); return(stream); }
private MemoryStream GetFileDescriptor(ItemObject[] items) { //Prepare MemoryStream ms = new MemoryStream(); //Prepare FILEDESCRIPTOR fileDescriptor = new FILEDESCRIPTOR(); //Write count ms.Write(BitConverter.GetBytes(items.Length), 0, 4); //Write items foreach (var item in items) { //Setup file descriptor fileDescriptor.cFileName = item.Name; fileDescriptor.ftLastWriteTime = ToFILETIME(item.Modified); fileDescriptor.ftCreationTime = ToFILETIME(item.Modified); fileDescriptor.nFileSizeHigh = (uint)(item.Size >> 32); fileDescriptor.nFileSizeLow = (uint)(item.Size & 0xffffffff); fileDescriptor.dwFlags = FD_WRITESTIME | FD_CREATETIME | FD_FILESIZE | FD_PROGRESSUI; fileDescriptor.dwFileAttributes = item.Attributes; //Marshal int length = Marshal.SizeOf(fileDescriptor); byte[] data = new byte[length]; //Check if (length > 0) { //Allocate IntPtr addr = Marshal.AllocHGlobal(length); Marshal.StructureToPtr(fileDescriptor, addr, true); //Copy into memory Marshal.Copy(addr, data, 0, length); //Copy to byte array Marshal.FreeHGlobal(addr); //Free memory //Write data ms.Write(data, 0, data.Length); } } //Return return(ms); }
private void addfile(string path, Stream stream) { FILEDESCRIPTOR fileDescriptor = new FILEDESCRIPTOR(); fileDescriptor.dwFlags = FD_PROGRESSUI | FD_UNICODE; fileDescriptor.cFileName = path; int size = Marshal.SizeOf(typeof(FILEDESCRIPTOR)); byte[] bytes = new byte[size]; IntPtr ptr = Marshal.AllocHGlobal(size); try { Marshal.StructureToPtr(fileDescriptor, ptr, false); Marshal.Copy(ptr, bytes, 0, size); } finally { Marshal.FreeHGlobal(ptr); } stream.Write(bytes, 0, bytes.Length); }
private MemoryStream GetFileDescriptor(DataRow[] SelectedItems) { MemoryStream FileDescriptorMemoryStream = new MemoryStream(); // Write out the FILEGROUPDESCRIPTOR.cItems value FileDescriptorMemoryStream.Write(BitConverter.GetBytes(SelectedItems.Length), 0, sizeof(UInt32)); FILEDESCRIPTOR FileDescriptor = new FILEDESCRIPTOR(); foreach (DataRow si in SelectedItems) { String FileName = (String)si["Name"]; if (FileName.StartsWith(m_BaseFolder)) { FileName = FileName.Substring(this.m_BaseFolder.Length); } FileDescriptor.cFileName = FileName.Replace('/', '\\'); Int64 FileWriteTimeUtc = DateTime.Now.ToFileTimeUtc(); Int32 FinalSize = Math.Max((Int32)si["Final_Size"], 1); FileDescriptor.ftLastWriteTime.dwHighDateTime = (Int32)(FileWriteTimeUtc >> 32); FileDescriptor.ftLastWriteTime.dwLowDateTime = (Int32)(FileWriteTimeUtc & 0xFFFFFFFF); FileDescriptor.nFileSizeHigh = (UInt32)(FinalSize >> 32); FileDescriptor.nFileSizeLow = (UInt32)(FinalSize & 0xFFFFFFFF); FileDescriptor.dwFlags = NativeMethods.FD_WRITESTIME | NativeMethods.FD_FILESIZE | NativeMethods.FD_PROGRESSUI; // Marshal the FileDescriptor structure into a byte array and write it to the MemoryStream. Int32 FileDescriptorSize = Marshal.SizeOf(FileDescriptor); IntPtr FileDescriptorPointer = Marshal.AllocHGlobal(FileDescriptorSize); Marshal.StructureToPtr(FileDescriptor, FileDescriptorPointer, true); Byte[] FileDescriptorByteArray = new Byte[FileDescriptorSize]; Marshal.Copy(FileDescriptorPointer, FileDescriptorByteArray, 0, FileDescriptorSize); Marshal.FreeHGlobal(FileDescriptorPointer); FileDescriptorMemoryStream.Write(FileDescriptorByteArray, 0, FileDescriptorByteArray.Length); } return(FileDescriptorMemoryStream); }
private MemoryStream GetFileDescriptor(DataRow[] SelectedItems) { MemoryStream FileDescriptorMemoryStream = new MemoryStream(); // Write out the FILEGROUPDESCRIPTOR.cItems value FileDescriptorMemoryStream.Write(BitConverter.GetBytes(SelectedItems.Length), 0, sizeof(UInt32)); FILEDESCRIPTOR FileDescriptor = new FILEDESCRIPTOR(); foreach (DataRow si in SelectedItems) { String FileName = (String)si["Name"]; if (FileName.StartsWith(m_BaseFolder)) { FileName = FileName.Substring(this.m_BaseFolder.Length); } FileDescriptor.cFileName = FileName.Replace('/', '\\'); Int64 FileWriteTimeUtc = DateTime.Now.ToFileTimeUtc(); Int32 FinalSize = Math.Max((Int32)si["Final_Size"], 1); FileDescriptor.ftLastWriteTime.dwHighDateTime = (Int32)(FileWriteTimeUtc >> 32); FileDescriptor.ftLastWriteTime.dwLowDateTime = (Int32)(FileWriteTimeUtc & 0xFFFFFFFF); FileDescriptor.nFileSizeHigh = (UInt32)(FinalSize >> 32); FileDescriptor.nFileSizeLow = (UInt32)(FinalSize & 0xFFFFFFFF); FileDescriptor.dwFlags = NativeMethods.FD_WRITESTIME | NativeMethods.FD_FILESIZE | NativeMethods.FD_PROGRESSUI; // Marshal the FileDescriptor structure into a byte array and write it to the MemoryStream. Int32 FileDescriptorSize = Marshal.SizeOf(FileDescriptor); IntPtr FileDescriptorPointer = Marshal.AllocHGlobal(FileDescriptorSize); Marshal.StructureToPtr(FileDescriptor, FileDescriptorPointer, true); Byte[] FileDescriptorByteArray = new Byte[FileDescriptorSize]; Marshal.Copy(FileDescriptorPointer, FileDescriptorByteArray, 0, FileDescriptorSize); Marshal.FreeHGlobal(FileDescriptorPointer); FileDescriptorMemoryStream.Write(FileDescriptorByteArray, 0, FileDescriptorByteArray.Length); } return FileDescriptorMemoryStream; }