Поддержка расширений MTP
Протокол передачи мультимедиа
Протокол MTP — это расширение протокола PTP. В результате все семантики протокола PTP допустимы в MTP.
MTP взаимодействует с помощью команд и ответов между двумя сторонами, инициатором и ответчиком. Роли участвующих устройств очень четко определены. Компьютер обычно является инициатором, и устройство всегда является ответчиком. Устройство, отличное от ПК, также может быть инициатором (например, палубой автомобиля или microsoft X-box). Устройство никогда не может принимать обе роли одновременно.
Инициатор начинает обмен данными, отправляя команду ответчику. Ответитель обрабатывает команду и отправляет соответствующий ответ. С командой может быть связан этап данных. В этом случае направление потока данных должно быть известно заранее и принято инициатором и ответчиком. Имейте в виду, что нет описательного заголовка, указывающего потоки данных для новых команд.
Ответчик может начать обмен данными независимо от инициатора. Например, ответчик может отправлять события инициатору. Однако данные не могут быть отправлены вместе с событием. Если есть какие-либо данные, которые необходимо прочитать в рамках события, инициатор должен отправить команду MTP, а устройство может отправлять данные в ответ на команду.
Полное описание MTP см. в спецификации MTP.
Отправка команд MTP
Приложения могут отправлять команды MTP на устройство, вызывая метод IPortableDevice::SendCommand . Отправленная команда зависит от того, существует ли этап данных и от того, считываются ли любые сопутствующие данные с устройства или записываются на него. В следующей таблице описаны три возможных команды расширения MTP.
Имейте в виду, что эти команды относятся к MTP; и поэтому реализуются только драйвером класса WPD MTP.
Get-Help | Описание |
---|---|
WPD_COMMAND_MTP_EXT_END_DATA_TRANSFER | Выдает команду MTP, которая сигнализирует о завершении операции чтения или записи данных. |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITHOUT_DATA_PHASE | Выдает команду MTP без соответствующего этапа данных. |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITH_DATA_TO_WRITE | Выдает команду MTP, за которой следует сопутствующие данные, которые будут записаны на устройство. |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITH_DATA_TO_READ | Выдает команду MTP, за которой следует сопутствующие данные, которые считываются с устройства. |
WPD_COMMAND_MTP_EXT_READ_DATA | Выдает команду MTP, которая отправляет данные с устройства на компьютер. |
WPD_COMMAND_MTP_EXT_WRITE_DATA | Выдает команду MTP, которая отправляет данные на устройство с компьютера. |
Независимо от этапа необходимо указать WPD_PROPERTY_MTP_EXT_OPERATION_CODE и WPD_PROPERTY_MTP_EXT_OPERATION_PARAMS .
Если драйвер MTP смог отправить команду на устройство, возвращаемые значения всегда будут содержать WPD_PROPERTY_MTP_EXT_RESPONSE_CODE. Если код ответа указывает на успешность и если семантика команды разрешает параметры ответа, WPD_PROPERTY_MTP_EXT_RESPONSE_PARAMS также будет доступна.
Связанные темы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по