Ответ 1
Похоже, dimeby8 опубликовал код, который обрабатывает передачу данных. Проверьте другие сообщения в своем блоге, особенно:
Отправка команд MTP через часть 1 WPD
Я хотел бы написать приложение, которое скопирует файлы MP3 в SanDisk Sansa M240. SanDisk не имеет буквы диска и использует MTP для передачи файлов. Я наткнулся на образец подключения к устройству по адресу: http://blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspx
но после подключения я не могу понять, как на самом деле копировать файлы/создавать папки на устройстве.
Я очень удивлен, что для этой библиотеки COM нет .Net-обертки.
Похоже, dimeby8 опубликовал код, который обрабатывает передачу данных. Проверьте другие сообщения в своем блоге, особенно:
Отправка команд MTP через часть 1 WPD
Для передачи файлов через MTP с помощью С#:
Загрузите этот пакет NuGet: PortableDevices
Добавьте ссылки на эти 4 библиотеки COM:
Возьмите dll под obj\Debug
и поместите их в bin\Debug
:
Теперь вы можете использовать следующую функцию для отображения всех устройств, хотя FriendlyName
не работает (возвращает пустую строку):
private IDictionary<string, string> GetDeviceIds()
{
var deviceIds = new Dictionary<string, string>();
var devices = new PortableDeviceCollection();
devices.Refresh();
foreach (var device in devices)
{
device.Connect();
deviceIds.Add(device.FriendlyName, device.DeviceId);
Console.WriteLine(@"DeviceId: {0}, FriendlyName: {1}", device.DeviceId, device.FriendlyName);
device.Disconnect();
}
return deviceIds;
}
Следующий шаг - получение содержимого с устройства, которое выполняется следующим образом:
var contents = device.GetContents();