ИНФОРМАЦИЯ: Вызов функции оболочки и интерфейсы из многопотокового подразделения

Переводы статьи Переводы статьи
Код статьи: 287087
Развернуть все | Свернуть все

Аннотация

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

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

Вызов CoInitializeEx(COINIT_MULTITHREADED) позволяет работать на любом потоке вызовы для объектов, созданных в вызывающем потоке. При доступе к объектам, которые используют потоковая модель из многопотоковое подразделение апартамент, COM будет синхронизировать доступ к объекту. В порядке для выполнения этой синхронизации COM необходимо маршалировать вызовы к объекту. Поскольку оболочка в настоящее время не поддерживает необходимую информацию, через библиотеку типов или заглушки/прокси-сервера код для своих объектов для маршалинга, пытается получить доступ к объектам оболочки из fail многопотокового подразделения.

Ниже приведены примеры как вызовы CoInitializeEx(COINIT_MULTITHREADED) может повлиять на функции, которые зависят от объектов оболочки.

Функцией GetOpenFileName/GetSaveFileName
Пользователи могут перемещаться для папки расширения пространства имен, такие как «Мои документы» Открыть и Сохранить как диалоговые окна. Тем не менее эти папки нельзя просмотреть в, поскольку обозревателю не удается создать необходимые интерфейсы, такие как IShellFolder.
ShellExecute/ShellExecuteEx
ShellExecute обработчики могут быть написаны для расширения функциональности ShellExecute/ShellExecuteEx, реализующий интерфейс IShellExecuteHook. При вызове ShellExecute/ShellExecuteEx не удается загрузить зарегистрированные обработчики ShellExecute.
В обоих этих примерах компонент, который пытается получить указатель интерфейса на объект оболочки с CoCreateInstance, IUnknown::QueryInterface и так далее обычно завершится неудачно с ошибкой E_NOINTERFACE при вызове из многопотоковых подразделений. Причина, как отмечалось выше, является код типа информация и заглушки/прокси-сервера для запрашиваемых объектов, не.

Ссылки

«Процесс», потоки и апартаменты, в разделе Основы COM в документации Platform SDK:
http://MSDN.Microsoft.com/en-us/library/ms693344 (VS.85) .aspx

Свойства

Код статьи: 287087 - Последний отзыв: 5 июня 2011 г. - Revision: 5.0
Ключевые слова: 
kbinfo kbpending kbshellgrp kbmt KB287087 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:287087

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

 

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