Compatibilidad con extensiones MTP
Protocolo de transferencia de medios
El Protocolo de transferencia de medios (MTP) es una extensión del Protocolo de transferencia de imágenes (PTP). Como resultado, todas las semánticas del protocolo PTP son válidas en MTP.
MTP se comunica mediante comandos y respuestas entre dos partes, el iniciador y el respondedor. Los roles de los dispositivos implicados están muy claramente definidos. Normalmente, el equipo es el iniciador y el dispositivo siempre es el respondedor. Un dispositivo que no es de PC también podría ser un iniciador (por ejemplo, una cubierta de automóvil o una caja X de Microsoft). Un dispositivo nunca puede asumir ambos roles al mismo tiempo.
El iniciador inicia la comunicación enviando un comando al respondedor. El respondedor procesa el comando y devuelve una respuesta adecuada. Puede haber una fase de datos asociada al comando . Si este es el caso, tanto el iniciador como el respondedor deben conocer la dirección del flujo de datos de antemano y aceptarla. Tenga en cuenta que no hay un encabezado descriptivo que indique flujos de datos para nuevos comandos.
El respondedor puede iniciar la comunicación independientemente del iniciador. Por ejemplo, el respondedor puede enviar eventos al iniciador. Sin embargo, no se puede enviar ningún dato junto con el evento . Si hay datos que deben leerse como parte del evento, el iniciador debe enviar un comando MTP y, a continuación, el dispositivo puede enviar datos en respuesta al comando.
Para obtener una descripción completa de MTP, consulte la especificación MTP.
Envío de comandos MTP
Las aplicaciones pueden enviar comandos MTP a un dispositivo invocando el método IPortableDevice::SendCommand . El comando que se envía depende de si hay una fase de datos y, sobre si los datos adjuntos se leen o escriben en el dispositivo. En la tabla siguiente se describen los tres posibles comandos de extensión MTP.
Tenga en cuenta que estos comandos son específicos de MTP; y, por lo tanto, solo se implementan mediante el controlador de clase MTP de WPD.
Get-Help | Descripción |
---|---|
WPD_COMMAND_MTP_EXT_END_DATA_TRANSFER | Emite un comando MTP que señala la conclusión de una operación de lectura o escritura de datos. |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITHOUT_DATA_PHASE | Emite un comando MTP sin una fase de datos correspondiente. |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITH_DATA_TO_WRITE | Emite un comando MTP seguido de los datos adjuntos, que se escribirán en el dispositivo. |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITH_DATA_TO_READ | Emite un comando MTP seguido de los datos adjuntos, que se leen desde el dispositivo. |
WPD_COMMAND_MTP_EXT_READ_DATA | Emite un comando MTP que envía datos desde el dispositivo al equipo. |
WPD_COMMAND_MTP_EXT_WRITE_DATA | Emite un comando MTP que envía datos al dispositivo desde el equipo. |
Independientemente de la fase, se deben especificar WPD_PROPERTY_MTP_EXT_OPERATION_CODE y WPD_PROPERTY_MTP_EXT_OPERATION_PARAMS .
Si el controlador MTP pudo enviar el comando al dispositivo, los valores devueltos siempre contendrán WPD_PROPERTY_MTP_EXT_RESPONSE_CODE. Si el código de respuesta indica que se ha realizado correctamente y si la semántica del comando permite parámetros de respuesta, WPD_PROPERTY_MTP_EXT_RESPONSE_PARAMS también estará disponible.
Temas relacionados
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de