win10 spyblocker .net usb wpd

.net - spyblocker - oo privacy win10



Escribir archivos en un dispositivo WPD a través de MTP C#/ VB.net (2)

Parece que dimeby8 publicó un código que maneja las transferencias de datos. Verifique otras publicaciones en su blog, especialmente:

Envío de comandos MTP a través de WPD parte 1

Envío de comandos MTP a través de WPD parte 2

Envío de comandos MTP a través de WPD parte 3

Me gustaría escribir una aplicación que copie archivos MP3 a SanDisk Sansa M240. SanDisk no tiene una letra de unidad y utiliza MTP para la transferencia de archivos. Me tropecé con la muestra de conexión al dispositivo en: http://blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspx

pero una vez conectado, no puedo entender cómo copiar archivos / crear carpetas en el dispositivo.

Estoy muy sorprendido de que no haya contenedores .Net para esta biblioteca COM.


Para transferir archivos a través de MTP con c #:

  1. Descargue este paquete NuGet: PortableDevices

  2. Agregue referencias a estas 4 bibliotecas COM:

    • PortableDeviceClassExtension
    • PortableDeviceConnectApi
    • PortableDeviceTypes
    • PortableDeviceApi
  3. Tome dll''s debajo de obj/Debug y obj/Debug en bin/Debug :

    • Interop.PortableDeviceClassExtension.dll
    • Interop.PortableDeviceConnectApiLib.dll
    • Interop.PortableDeviceTypesLib.dll
    • Interop.PortableDeviceApiLib.dll

Ahora puede usar la siguiente función para listar todos los dispositivos, aunque FriendlyName no parece estar funcionando (devuelve una cadena vacía):

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; }

El siguiente paso es obtener los contenidos del dispositivo, que se hace de esta manera:

var contents = device.GetContents();