Сервер автоматизации не может передать указатель реализации IPictureDisp объект изображения через границы процессов

Переводы статьи Переводы статьи
Код статьи: 150034 - Vizualiza?i produsele pentru care se aplic? acest articol.
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Развернуть все | Свернуть все

Проблема

Сервер автоматизации, реализующий объект рисунка в оболочку класса CPictureHolder в MFC происходит сбой при попытке передать указатель на реализацию IPictureDisp объект изображения через границы процессов.

Причина

IPictureDisp получает доступ к методам объекта рисунка, который не может маршалироваться через границы процессов. Например, IPictureDisp поддерживает DISPID_PICT_RENDER для доступа к методу обработки изображения объекта. Метод Render принимает дескриптор контекста устройства, в качестве первого параметра. Дескрипторы контекста устройства, не могут быть упакованы.

Диспетчерские интерфейсы могут быть маршалировать обычно с помощью интерфейса IDispatch, маршалинга кода, но рисунок объект реализует IMarshal специально для маршалинга сбой.

Статус

Такое поведение является особенностью данного продукта..

Дополнительная информация

ClassWizard в Visual C++ позволяет выбрать LPPICTUREDISP возвращаемый тип метода. Этот метод может возвращать IPictureDisp интерфейс получить, вызвав CPictureHolder::GetPictureDispatch. Тем не менее если этот метод вызывается с помощью контроллера в другой процесс, метод завершается неудачей и возвращает код ошибки E_FAIL.

Поскольку объект рисунок маршалинг IPictureDisp сбой, проблемы также может возникать при попытке получить интерфейс IPictureDisp через границы потоков в объекте модели апартамента нескольких потоков.

Ссылки

Для получения дополнительных сведений о маршалинге обратитесь к "Inside OLE," второй выпуск, Kraig Brockschmidt, главы 6, «Прозрачность локального или удаленного», опубликованное Microsoft Press.

Свойства

Код статьи: 150034 - Последний отзыв: 23 февраля 2014 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Foundation Class Library 4.2 на следующих платформах
    • Microsoft Visual C++ 4.0 Standard Edition
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 5.0 Professional Edition
Ключевые слова: 
kbnosurvey kbarchive kbtshoot kbautomation kbbitmap kbctrl kbprb kbmt KB150034 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:150034

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com