Suporte a extensões MTP
Protocolo de Transferência de Mídia
O MTP (Media Transfer Protocol) é uma extensão para o PTP (Protocolo de Transferência de Imagem). Como resultado, todas as semânticas de protocolo PTP são válidas no MTP.
O MTP se comunica usando comandos e respostas entre duas partes, o iniciador e o respondente. As funções dos dispositivos envolvidos são claramente definidas. O computador normalmente é o iniciador e o dispositivo é sempre o respondente. Um dispositivo não PC também pode ser um iniciador (por exemplo, um deck de carro ou uma caixa X da Microsoft). Um dispositivo nunca pode assumir ambas as funções ao mesmo tempo.
O iniciador inicia a comunicação enviando um comando para o respondente. O respondente processa o comando e envia uma resposta apropriada. Pode haver uma fase de dados associada ao comando. Se esse for o caso, a direção do fluxo de dados deverá ser conhecida antecipadamente e aceita pelo iniciador e pelo respondente. Lembre-se de que não há um cabeçalho descritivo que indique fluxos de dados para novos comandos.
O respondente pode iniciar a comunicação independente do iniciador. Por exemplo, o respondente pode enviar eventos para o iniciador. No entanto, nenhum dado pode ser enviado junto com o evento. Se houver dados que precisem ser lidos como parte do evento, o iniciador deverá enviar um comando MTP e, em seguida, o dispositivo poderá enviar dados em resposta ao comando.
Para obter uma descrição completa do MTP, consulte a especificação MTP.
Enviando comandos MTP
Os aplicativos podem enviar comandos MTP para um dispositivo invocando o método IPortableDevice::SendCommand . O comando enviado depende se há uma fase de dados e se os dados que acompanham são lidos ou gravados no dispositivo. A tabela a seguir descreve os três comandos de extensão MTP possíveis.
Lembre-se de que esses comandos são específicos do MTP; e, portanto, são implementados apenas pelo driver de classe MTP do WPD.
Comando | Descrição |
---|---|
WPD_COMMAND_MTP_EXT_END_DATA_TRANSFER | Emite um comando MTP que sinaliza a conclusão de uma operação de leitura ou gravação de dados. |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITHOUT_DATA_PHASE | Emite um comando MTP sem uma fase de dados correspondente. |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITH_DATA_TO_WRITE | Emite um comando MTP que é seguido pelos dados que acompanham, que serão gravados no dispositivo. |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITH_DATA_TO_READ | Emite um comando MTP que é seguido pelos dados que acompanham, que são lidos do dispositivo. |
WPD_COMMAND_MTP_EXT_READ_DATA | Emite um comando MTP que envia dados do dispositivo para o computador. |
WPD_COMMAND_MTP_EXT_WRITE_DATA | Emite um comando MTP que envia dados para o dispositivo do computador. |
Independentemente da fase, WPD_PROPERTY_MTP_EXT_OPERATION_CODE e WPD_PROPERTY_MTP_EXT_OPERATION_PARAMS devem ser especificados.
Se o driver MTP conseguiu enviar o comando para o dispositivo, os valores retornados sempre conterão WPD_PROPERTY_MTP_EXT_RESPONSE_CODE. Se o código de resposta indicar êxito e se a semântica do comando permitir parâmetros de resposta, WPD_PROPERTY_MTP_EXT_RESPONSE_PARAMS também estará disponível.
Tópicos relacionados
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de