private IPortableDeviceValues GetRequiredPropertiesForCopyWPD(PortableDeviceFile file, string parentObjectId) { IPortableDeviceValues values = new PortableDeviceTypesLib.PortableDeviceValues() as IPortableDeviceValues; _tagpropertykey WPD_OBJECT_PARENT_ID = new _tagpropertykey(); WPD_OBJECT_PARENT_ID.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_PARENT_ID.pid = 3; values.SetStringValue(ref WPD_OBJECT_PARENT_ID, parentObjectId); long fileSize = this.GetFileSize(file.Id); _tagpropertykey WPD_OBJECT_SIZE = new _tagpropertykey(); WPD_OBJECT_SIZE.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_SIZE.pid = 11; values.SetUnsignedLargeIntegerValue(WPD_OBJECT_SIZE, (ulong)fileSize); _tagpropertykey WPD_OBJECT_ORIGINAL_FILE_NAME = new _tagpropertykey(); WPD_OBJECT_ORIGINAL_FILE_NAME.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_ORIGINAL_FILE_NAME.pid = 12; values.SetStringValue(WPD_OBJECT_ORIGINAL_FILE_NAME, file.Name); _tagpropertykey WPD_OBJECT_NAME = new _tagpropertykey(); WPD_OBJECT_NAME.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_NAME.pid = 4; values.SetStringValue(WPD_OBJECT_NAME, file.Name); return(values); }
/** * Get required properties. */ private IPortableDeviceValues GetRequiredPropertiesForContentType( string fileName, string parentObjectId) { IPortableDeviceValues values = new PortableDeviceTypesLib.PortableDeviceValues() as IPortableDeviceValues; var WPD_OBJECT_PARENT_ID = new _tagpropertykey(); WPD_OBJECT_PARENT_ID.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_PARENT_ID.pid = 3; values.SetStringValue(ref WPD_OBJECT_PARENT_ID, parentObjectId); FileInfo fileInfo = new FileInfo(fileName); var WPD_OBJECT_SIZE = new _tagpropertykey(); WPD_OBJECT_SIZE.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_SIZE.pid = 11; values.SetUnsignedLargeIntegerValue(WPD_OBJECT_SIZE, (ulong)fileInfo.Length); var WPD_OBJECT_ORIGINAL_FILE_NAME = new _tagpropertykey(); WPD_OBJECT_ORIGINAL_FILE_NAME.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_ORIGINAL_FILE_NAME.pid = 12; values.SetStringValue(WPD_OBJECT_ORIGINAL_FILE_NAME, Path.GetFileName(fileName)); var WPD_OBJECT_NAME = new _tagpropertykey(); WPD_OBJECT_NAME.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_NAME.pid = 4; values.SetStringValue(WPD_OBJECT_NAME, Path.GetFileName(fileName)); return(values); }
private IPortableDeviceValues GetRequiredPropertiesForFolderType(string folderName, string parentObjectId) { IPortableDeviceValues values = new PortableDeviceTypesLib.PortableDeviceValues() as IPortableDeviceValues; //type var WPD_OBJECT_CONTENT_TYPE = new _tagpropertykey(); WPD_OBJECT_CONTENT_TYPE.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_CONTENT_TYPE.pid = 7; var WPD_CONTENT_TYPE_FOLDER = new _tagpropertykey(); WPD_CONTENT_TYPE_FOLDER.fmtid = new Guid(0x27E2E392, 0xA111, 0x48E0, 0xAB, 0x0C, 0xE1, 0x77, 0x05, 0xA0, 0x5F, 0x85); values.SetGuidValue(ref WPD_OBJECT_CONTENT_TYPE, WPD_CONTENT_TYPE_FOLDER.fmtid); var WPD_OBJECT_PARENT_ID = new _tagpropertykey(); WPD_OBJECT_PARENT_ID.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_PARENT_ID.pid = 3; values.SetStringValue(ref WPD_OBJECT_PARENT_ID, parentObjectId); //name var WPD_OBJECT_NAME = new _tagpropertykey(); WPD_OBJECT_NAME.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_NAME.pid = 4; values.SetStringValue(WPD_OBJECT_NAME, folderName); return(values); }
/// <summary> /// 创建符合要求的文件夹 /// </summary> /// <param name="parentId"></param> /// <param name="folderName"></param> /// <returns></returns> private IPortableDeviceValues GetRequiredPropertiesForFolder(string parentId, string folderName) { IPortableDeviceValues values = new PortableDeviceTypesLib.PortableDeviceValues() as IPortableDeviceValues; values.SetStringValue(ref pKey.WPD_OBJECT_PARENT_ID, parentId); values.SetStringValue(ref pKey.WPD_OBJECT_NAME, folderName); values.SetStringValue(ref pKey.WPD_OBJECT_ORIGINAL_FILE_NAME, folderName); values.SetGuidValue(ref pKey.WPD_OBJECT_CONTENT_TYPE, ref pGuid.WPD_CONTENT_TYPE_FOLDER); values.SetGuidValue(ref pKey.WPD_OBJECT_FORMAT, ref pGuid.WPD_OBJECT_FORMAT_PROPERTIES_ONLY); return(values); }
/// <summary> /// 创建符合要求的文件 /// </summary> /// <param name="sourcePath"></param> /// <param name="parentId"></param> /// <returns></returns> private static IPortableDeviceValues GetRequiredPropertiesForContentType(string sourcePath, string parentId) { IPortableDeviceValues values = new PortableDeviceTypesLib.PortableDeviceValues() as IPortableDeviceValues; values.SetStringValue(ref pKey.WPD_OBJECT_PARENT_ID, parentId); values.SetStringValue(ref pKey.WPD_OBJECT_NAME, Path.GetFileName(sourcePath)); FileInfo fileInfo = new FileInfo(sourcePath); values.SetUnsignedLargeIntegerValue(ref pKey.WPD_OBJECT_SIZE, (ulong)fileInfo.Length); values.SetStringValue(ref pKey.WPD_OBJECT_ORIGINAL_FILE_NAME, Path.GetFileName(sourcePath)); return(values); }
private IPortableDeviceValues GetRequiredPropertiesForContentTypeFolder(string fileName, string parentObjectId) { IPortableDeviceValues values = new PortableDeviceTypesLib.PortableDeviceValues() as IPortableDeviceValues; _tagpropertykey WPD_OBJECT_PARENT_ID = new _tagpropertykey(); WPD_OBJECT_PARENT_ID.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_PARENT_ID.pid = 3; values.SetStringValue(ref WPD_OBJECT_PARENT_ID, parentObjectId); //FileInfo fileInfo = new FileInfo(fileName); //var WPD_OBJECT_SIZE = new _tagpropertykey(); //WPD_OBJECT_SIZE.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); //WPD_OBJECT_SIZE.pid = 11; //values.SetUnsignedLargeIntegerValue(WPD_OBJECT_SIZE, (ulong)fileInfo.Length); _tagpropertykey WPD_OBJECT_ORIGINAL_FILE_NAME = new _tagpropertykey(); WPD_OBJECT_ORIGINAL_FILE_NAME.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_ORIGINAL_FILE_NAME.pid = 12; values.SetStringValue(WPD_OBJECT_ORIGINAL_FILE_NAME, Path.GetFileName(fileName)); _tagpropertykey WPD_OBJECT_NAME = new _tagpropertykey(); WPD_OBJECT_NAME.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_NAME.pid = 4; values.SetStringValue(WPD_OBJECT_NAME, Path.GetFileName(fileName)); _tagpropertykey WPD_OBJECT_CONTENT_TYPE = new _tagpropertykey(); WPD_OBJECT_CONTENT_TYPE.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_CONTENT_TYPE.pid = 7; Guid WPD_CONTENT_TYPE_FOLDER = new Guid(0x27E2E392, 0xA111, 0x48E0, 0xAB, 0x0C, 0xE1, 0x77, 0x05, 0xA0, 0x5F, 0x85); values.SetGuidValue(WPD_OBJECT_CONTENT_TYPE, WPD_CONTENT_TYPE_FOLDER); _tagpropertykey WPD_OBJECT_FORMAT = new _tagpropertykey(); WPD_OBJECT_FORMAT.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_FORMAT.pid = 6; Guid WPD_OBJECT_FORMAT_PROPERTIES_ONLY = new Guid(0x30010000, 0xAE6C, 0x4804, 0x98, 0xBA, 0xC5, 0x7B, 0x46, 0x96, 0x5F, 0xE7); values.SetGuidValue(WPD_OBJECT_FORMAT, WPD_OBJECT_FORMAT_PROPERTIES_ONLY); return(values); }
private IPortableDeviceValues GetRequiredPropertiesForContentType(string source, string destination, string parentObjectId) { IPortableDeviceValues values = new PortableDeviceTypesLib.PortableDeviceValues() as IPortableDeviceValues; var WPD_OBJECT_PARENT_ID = new _tagpropertykey(); WPD_OBJECT_PARENT_ID.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_PARENT_ID.pid = 3; values.SetStringValue(ref WPD_OBJECT_PARENT_ID, parentObjectId); FileInfo fileInfo = new FileInfo(source); var WPD_OBJECT_SIZE = new _tagpropertykey(); WPD_OBJECT_SIZE.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_SIZE.pid = 11; values.SetUnsignedLargeIntegerValue(WPD_OBJECT_SIZE, (ulong)fileInfo.Length); var WPD_OBJECT_ORIGINAL_FILE_NAME = new _tagpropertykey(); WPD_OBJECT_ORIGINAL_FILE_NAME.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_ORIGINAL_FILE_NAME.pid = 12; values.SetStringValue(WPD_OBJECT_ORIGINAL_FILE_NAME, Path.GetFileName(destination)); var WPD_OBJECT_NAME = new _tagpropertykey(); WPD_OBJECT_NAME.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C); WPD_OBJECT_NAME.pid = 4; values.SetStringValue(WPD_OBJECT_NAME, Path.GetFileName(destination)); return values; }
public bool DownloadFile(PortableDeviceFile file, string saveToPath) { bool isdownload = false; IPortableDeviceContent content; this._device.Content(out content); IPortableDeviceResources resources; content.Transfer(out resources); PortableDeviceApiLib.IStream wpdStream; uint optimalTransferSize = 0; System.Runtime.InteropServices.ComTypes.IStream sourceStream = null; IPortableDeviceValues values = new PortableDeviceTypesLib.PortableDeviceValues() as IPortableDeviceValues; DateTime createdDate = GetObjectCreationTime(content, file.Id); ImageItem imageItem = null; imageItem = new ImageItem(0, file.Id, file.Name, createdDate); var property = new _tagpropertykey(); property.fmtid = new Guid(0xE81E79BE, 0x34F0, 0x41BF, 0xB5, 0x3F, 0xF1, 0xA0, 0x6A, 0xE8, 0x78, 0x42); property.pid = 0; string imgpath = string.Empty; FileStream targetStream = null; try { resources.GetStream(file.Id, ref property, 0, ref optimalTransferSize, out wpdStream); sourceStream = (System.Runtime.InteropServices.ComTypes.IStream)wpdStream; var filename = Path.GetFileName(file.Id); imgpath = saveToPath + "IMG_1_" + imageItem.TakenTime.ToString() + "_" + file.Id + ".jpg"; targetStream = new FileStream(imgpath, FileMode.Create, FileAccess.Write); unsafe { var buffer = new byte[2048]; int bytesRead; do { sourceStream.Read(buffer, 2048, new IntPtr(&bytesRead)); targetStream.Write(buffer, 0, 2048); } while (bytesRead > 0); targetStream.Close(); isdownload = true; } } catch (Exception ex) { isdownload = false; Logger.Basic.Error("PortableDevice DownloadFile : " + ex.ToString(), ex); } finally { if (resources != null && Marshal.IsComObject(resources)) { Marshal.ReleaseComObject(resources); } if (content != null && Marshal.IsComObject(content)) { Marshal.ReleaseComObject(content); } if (sourceStream != null && Marshal.IsComObject(sourceStream)) { Marshal.ReleaseComObject(sourceStream); } if (!isdownload) { if (File.Exists(imgpath)) { if (targetStream != null) { targetStream.Close(); } File.Delete(imgpath); } } } return(isdownload); }