/// <summary> /// Execute the specified command /// </summary> /// <param name="command"></param> public void ExecuteCommand(_tagpropertykey command) { var commandValues = (IPortableDeviceValues) new PortableDeviceValuesClass(); IPortableDeviceValues results; commandValues.SetGuidValue(ref PortableDevicePKeys.WPD_PROPERTY_COMMON_COMMAND_CATEGORY, ref command.fmtid); commandValues.SetUnsignedIntegerValue(ref PortableDevicePKeys.WPD_PROPERTY_COMMON_COMMAND_ID, command.pid); // According to documentation, first parameter should be 0 (see http://msdn.microsoft.com/en-us/library/dd375691%28v=VS.85%29.aspx) PortableDeviceClass.SendCommand(0, commandValues, out results); }