Мое примерное приложение получает экземпляр COM IStream
из функции IPortableDeviceResources::GetStream()
. Я хочу асинхронно прочитать содержимое объекта устройства, используя этот объект IStream. Как я могу сделать это, используя асинхронный моникер?
Как асинхронно читать поток данных WPD MTP?
Ответы (1)
IStream является синхронным по замыслу. Я бы сначала спросил, каков ваш сценарий для того, чтобы это было асинхронным.
Например, если вам нужен асинхронный поток данных, чтобы не блокировать поток пользовательского интерфейса, вы можете выполнять операции IStream в рабочем потоке.
Если причина в том, что вы можете выполнять несколько параллельных операций чтения, устройства MTP 1.0 не поддерживают это, поскольку на уровне драйвера запросы все равно будут обрабатываться последовательно в одном глобальном сеансе MTP. MTP 2.0 поддерживает многосеансовый режим, который допускает несколько параллельных подключений к одному и тому же устройству, но пока это реализовано не на многих устройствах. Большинство, если не все, MTP-устройства на рынке — это MTP 1.0.