Это сводит меня с ума.
Образец CameraCapture для Windows Mobile 6 отлично работает на всех протестированных устройствах WM 6.Я добавил ту же графическую конструкцию в большую сложную программу.На некоторых устройствах фильтр CLSID_VideoCapture не может принять имя камеры через интерфейсный вызов IPersistPropertyBag :: Load () и возвращает E_INVALIDARG (0x80070057).
Моя программа отлично работает на одном устройстве WM 6.5, поэтому я думаю, чтоимя камеры правильно передается в фильтр.Похоже, существует некоторый внешний конфликт, который не позволяет камере быть подключенной к фильтру на некоторых устройствах.Сбои происходят на устройствах WM 6.1 и WM 6.5.
Я проверял и проходил много раз, но не могу найти никакой виновной разницы между тривиальным образцом CameraCapture (который всегда работает) и моей сложной программой.(который работает только на одном устройстве).Вот некоторые подробности:
- Вся работа выполняется в основном потоке (CameraCapture использует вспомогательный поток, но ведет себя так же, если построение графика выполняется в основном потоке).
- E_INVALIDARG не указан в качестве возможного возвращаемого значения из IPersistPropertyBag :: Load ().Я думаю, что ошибка происходит из-за какого-то внутреннего аспекта инициализации камеры.
- Если я передаю неверное имя камеры, например «CAM», я получаю 0x80070002, «устройство / файл не найден».Без имени в сумке я получаю 0x8007000d «Данные недействительны».
- Я реализовал CErrorLog для загрузки (& PropBag, & ErrorLog), и он никогда не вызывается во время загрузки (), поэтому нетдоступно больше деталей.
- Параметры компиляции и компоновки примерно одинаковы для двух программ.
- Обе программы используют CoInitializeEx (NULL, COINIT_MULTITHREADED), и комплексная программа отлично работает на одном устройстве.
- Выбор камеры как в CameraCapture, так и в моей программе почти идентичен описанию здесь: http://msdn.microsoft.com/en-us/library/aa918757.aspx
- Я нашел еще одно упоминание этой проблемы: http://www.eggheadcafe.com/software/aspnet/30318752/problem-with-propertybag.aspx
Любые мысли о том, что на самом деле означает ошибка или какие конфликты могут быть причиной этого, приветствуются.
Спасибо.