INFO: Aufrufen von Shell-Funktionen und Schnittstellen aus einem Multithreaded Apartment

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 287087 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Zusammenfassung

Beim Aufrufen oder Zugriff auf eine Shell-Funktion oder der Shell-Schnittstelle von einem Thread, der als Multithread-Apartment initialisiert wurde möglicherweise die Funktion oder Schnittstelle verfügen über seine Funktionen beeinträchtigt oder vollständig fehlschlagen.

Weitere Informationen

Ein Aufruf von CoInitializeEx(COINIT_MULTITHREADED) lässt Aufrufe auf dem aufrufenden Thread erstellte Objekte auf einem beliebigen Thread ausgeführt werden. Wenn Objekte zugreifen, die die Apartmentthreading-Multithread-Apartment-Modell verwenden, werden COM-Zugriff auf das Objekt synchronisiert. Damit diese Synchronisierung auftreten muss COM-Aufrufe an das Objekt marshallen. Da die Shell derzeit nicht die erforderliche Informationen über einen Typ Bibliothek oder Proxy-Stub-Code, für die Objekte gemarshallt werden, Bereitstellen von fehl Shell Zugriff auf Objekte aus einem Multithread-Apartment.

Beispiele wie Aufrufe von CoInitializeEx(COINIT_MULTITHREADED) Funktionen auswirken können, die Shell Objekte abhängig sind:

GetOpenFileName-GetSaveFileName
Benutzer können für Namespace-Erweiterung-Ordner wie "Eigene Dateien" über die Dialogfelder Öffnen und Speichern unter navigieren. Dieser Ordner können jedoch zu durchsucht werden, da der Browser die erforderlichen Schnittstellen, wie z. B. IShellFolder erstellen kann.
ShellExecute-ShellExecuteEx
ShellExecute-Hooks können die Funktionalität von ShellExecute-ShellExecuteEx erweitert durch Implementieren der IShellExecuteHook-Schnittstelle geschrieben werden. Wenn ShellExecute-ShellExecuteEx aufgerufen wird, können nicht registrierte ShellExecute Hooks geladen werden.
In beiden Beispielen wird die Komponente, die versucht, einen Schnittstellenzeiger auf ein Objekt Shell mit CoCreateInstance, IUnknown:: QueryInterface, erhalten usw. in der Regel mit Fehler E_NOINTERFACE wird von multithreaded Apartments aufgerufen fehl. Der Grund ist wie oben erwähnt, dass kein Typ Informationen oder Proxy-Stub-Code für die angeforderten Objekte vorhanden ist.

Informationsquellen

"Verarbeitung, Threads und Apartments," unter COM-Grundlagen in der Platform SDK-Dokumentation:
http://msdn.microsoft.com/en-us/library/ms693344(VS.85).aspx

Eigenschaften

Artikel-ID: 287087 - Geändert am: Montag, 11. Juli 2005 - Version: 1.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Platform Software Development Kit January 2000 Edition
Keywords: 
kbmt kbinfo kbpending kbshellgrp KB287087 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 287087
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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