API проверки правописания в Win8 отправляет null как параметр

Я реализую Windows 8 Проверка орфографии COM-сервис в C ++ без ATL, но когда Windows ‘msspellcheckinghost.exe вызывает мой ISpellCheckProviderFactory::SupportedLanguages() это проходит nullptr как выходной параметр, к которому я, естественно, возвращаюсь E_POINTER … что приводит к ошибке и сообщению журнала событий:

Failed instantiating third-party spellchecking provider: CLSID {...}, HRESULT 0x80004003.

Когда я заставляю фабричный класс и загрузчик DLL использовать ATL, то хост правильно вызывает функцию. Что не имеет смысла, так как последующее не ATL EnumString реализация используется правильно. Так почему же ATL может потребоваться на заводе, а не после?

Что еще хуже, я не знаю, как подключить отладчик к хосту, так как msspellcheckinghost.exe не имеет документов, так что понятия не имею, что на него передать.

Источник проекта доступен по адресу https://github.com/TinoDidriksen/spellers/tree/master/win8 — прототипы в основном скопированы из собственного примера проекта Microsoft, но я разорвал части ATL, потому что я хочу, чтобы GUID загружались из файла конфигурации во время выполнения (эта часть работает).

То же самое происходит в 32-битной ОС + DLL, поэтому не имеет к этому никакого отношения.

1

Решение

С помощь форумов MS, проблема оказалась в том, что ISpellCheckProviderFactory это не IClassFactoryи DLL должна возвращать правильное IClassFactory что в свою очередь может CreateInstance() фактический провайдер фабрики.

0

Другие решения


По вопросам рекламы [email protected]