INFO: Shell-Funktionen und Schnittstellen aus einem Multithread-Apartment aufrufen

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 287087
Zusammenfassung
Beim Aufrufen oder Zugriff auf eine Shellfunktion oder Shellschnittstelle von einem Thread aus, der als Multithread-Apartment initialisiert wurde, kann die Funktionalität der Funktion oder Schnittstelle beeinträchtigt werden oder vollständig ausfallen.
Weitere Informationen
Ein Aufruf von CoInitializeEx(COINIT_MULTITHREADED) kann Aufrufe von Objekten auf dem aufrufenden Thread erstellt für jeden Thread ausgeführt werden. Beim Zugriff auf Objekte, mit denen das Apartmentthreadingmodell aus einem Multithread-Apartment synchronisiert COM auf das Objekt. Reihenfolge für diese Synchronisierung muss COM Aufrufe an das Objekt marshallen. Da die Shell derzeit nicht die erforderlichen Informationen bereitstellen, versucht über eine Typbibliothek oder Proxy/Stub-Code für die Objekte gemarshallt werden, Multithreadapartment Fail Shell-Objekte zugreifen.

Es folgen Beispiele für wie Aufrufe von CoInitializeEx(COINIT_MULTITHREADED) Funktionen, die auf Desktopobjekte auswirken können:

GetOpenFileName-GetSaveFileName
Benutzer können auf Namespace-Erweiterung Ordner wie "Eigene Dateien" in den Dialogfeldern Öffnen und Speichern unter navigieren. Dieser Ordner können jedoch auf durchsucht werden, da der Browser die erforderlichen Schnittstellen wie IShellFolder erstellt werden kann.
ShellExecute-ShellExecuteEx
ShellExecute-Hooks können zum Erweitern der Funktionalität des ShellExecute-ShellExecuteEx durch Implementieren der IShellExecuteHook-Schnittstelle geschrieben werden. Beim Aufruf von ShellExecute-ShellExecuteEx werden nicht registrierte ShellExecute Hooks geladen.
In beiden Beispielen die Komponente, die einen Schnittstellenzeiger auf ein Shellobjekt mit CoCreateInstance QueryInterface, und so weiter versucht normalerweise Fehler E_NOINTERFACE multithreaded Apartments als bei der. Der Grund ist wie oben erwähnt, dass kein Typ Informationen oder Proxy/Stub-Code für die angeforderten Objekte.
Informationsquellen
"Process, Threads and Apartments" in den COM-Grundlagen in der Platform SDK-Dokumentation:

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 287087 – Letzte Überarbeitung: 07/25/2015 09:28:00 – Revision: 2.0

  • kbinfo kbpending kbshellgrp kbmt KB287087 KbMtde
Feedback