В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

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

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке: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:

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 287087 — последний просмотр: 06/05/2011 19:49:00 — редакция: 5.0

  • kbinfo kbpending kbshellgrp kbmt KB287087 KbMtru
Отзывы и предложения