Как читать поток данных WPD MTP асинхронно?

Мой образец приложения получает COM IStream экземпляр из IPortableDeviceResources::GetStream() функция. Я хочу читать содержимое объекта устройства асинхронно, используя этот объект IStream. Как я могу сделать это с помощью асинхронного прозвища?

1 ответ

IStream является синхронным по дизайну. Сначала я хотел бы спросить, каков ваш сценарий для того, чтобы это было асинхронным.

Например, если причина, по которой вам нужен асинхронный поток данных, заключается в том, что вы не заблокируете поток пользовательского интерфейса, вы можете выполнять операции IStream в рабочем потоке.

Если причина в том, что вы можете выполнить несколько параллельных чтений, устройства MTP 1.0 не поддерживают это, потому что на уровне драйвера запросы по-прежнему будут обрабатываться последовательно в одном глобальном сеансе MTP. MTP 2.0 поддерживает мультисессионный режим, который допускает несколько параллельных подключений к одному и тому же устройству, но пока не многие устройства приняли это. Большинство, если не все, устройства MTP на рынке - это MTP 1.0.

Другие вопросы по тегам