internal void UploadFile(string fileName, Stream stream) { IPortableDeviceValues portableDeviceValues = new PortableDeviceValues() as IPortableDeviceValues; portableDeviceValues.SetStringValue(ref WPD.OBJECT_PARENT_ID, this.Id); portableDeviceValues.SetUnsignedLargeIntegerValue(ref WPD.OBJECT_SIZE, (ulong)stream.Length); portableDeviceValues.SetStringValue(ref WPD.OBJECT_ORIGINAL_FILE_NAME, fileName); portableDeviceValues.SetStringValue(ref WPD.OBJECT_NAME, fileName); // test using (PropVariantFacade now = PropVariantFacade.DateTimeToPropVariant(DateTime.Now)) { portableDeviceValues.SetValue(ref WPD.OBJECT_DATE_CREATED, ref now.Value); portableDeviceValues.SetValue(ref WPD.OBJECT_DATE_MODIFIED, ref now.Value); uint num = 0u; string text = null; this.device.deviceContent.CreateObjectWithPropertiesAndData(portableDeviceValues, out IStream wpdStream, ref num, ref text); using (StreamWrapper destinationStream = new StreamWrapper(wpdStream)) { stream.CopyTo(destinationStream); destinationStream.Flush(); } } }
internal void SetDateAuthored(DateTime value) { IPortableDeviceValues portableDeviceValues = new PortableDeviceValues() as IPortableDeviceValues; IPortableDeviceValues result; using (PropVariantFacade val = PropVariantFacade.DateTimeToPropVariant(value)) { portableDeviceValues.SetValue(ref WPD.OBJECT_DATE_AUTHORED, ref val.Value); this.device.deviceProperties.SetValues(this.Id, portableDeviceValues, out result); ComTrace.WriteObject(result); } Refresh(); }
/// <summary> /// Sets the values of multiple properties. /// </summary> /// <param name="data">An array that contains the property keys and values.</param> /// <returns>A dictionary of the new values for the properties. Actual values may not match the requested values.</returns> public IDictionary <PropertyKey, object> SetProperties(DataFieldInfo[] data) { if (data == null || data.Length == 0) { throw new ArgumentException("LocalizedMessages.SensorEmptyData", "data"); } IPortableDeviceValues pdv = new PortableDeviceValues(); for (int i = 0; i < data.Length; i++) { PropertyKey propKey = data[i].Key; object value = data[i].Value; if (value == null) { throw new ArgumentException( string.Format(System.Globalization.CultureInfo.InvariantCulture, "LocalizedMessages.SensorNullValueAtIndex", i), "data"); } try { // new PropVariant will throw an ArgumentException if the value can // not be converted to an appropriate PropVariant. using (PropVariant pv = PropVariant.FromObject(value)) { pdv.SetValue(ref propKey, pv); } } catch (ArgumentException) { byte[] buffer; if (value is Guid) { Guid guid = (Guid)value; pdv.SetGuidValue(ref propKey, ref guid); } else if ((buffer = value as byte[]) != null) { pdv.SetBufferValue(ref propKey, buffer, (uint)buffer.Length); } else { pdv.SetIUnknownValue(ref propKey, value); } } } Dictionary <PropertyKey, object> results = new Dictionary <PropertyKey, object>(); IPortableDeviceValues pdv2 = null; HResult hr = nativeISensor.SetProperties(pdv, out pdv2); if (hr == HResult.Ok) { try { uint count = 0; pdv2.GetCount(ref count); for (uint i = 0; i < count; i++) { PropertyKey propKey = new PropertyKey(); using (PropVariant propVal = new PropVariant()) { pdv2.GetAt(i, ref propKey, propVal); results.Add(propKey, propVal.Value); } } } finally { Marshal.ReleaseComObject(pdv2); pdv2 = null; } } return(results); }