IGlobalOptions-Schnittstelle (objidlbase.h)

Legt globale Eigenschaften der Com-Runtime (Component Object Model) fest und fragt sie ab.

Vererbung

Die IGlobalOptions-Schnittstelle erbt von der IUnknown-Schnittstelle . IGlobalOptions verfügt auch über folgende Membertypen:

Methoden

Die IGlobalOptions-Schnittstelle verfügt über diese Methoden.

 
IGlobalOptions::Query

Die IGlobalOptions::Query -Methode (objidlbase.h) fragt die angegebene globale Eigenschaft der COM-Runtime ab.
IGlobalOptions::Set

Die IGlobalOptions::Set-Methode (objidlbase.h) legt die angegebene globale Eigenschaft der COM-Runtime fest.

Hinweise

Die folgenden globalen Eigenschaften der COM-Runtime können mit dieser Schnittstelle festgelegt und abgefragt werden.

Eigenschaft Werte
COMGLB_APPID Die AppID für den Prozess. Dies ist die einzige unterstützte Eigenschaft unter Windows XP.
COMGLB_EXCEPTION_HANDLING Mögliche Werte für die COMGLB_EXCEPTION_HANDLING-Eigenschaft sind:
  • COMGLB_EXCEPTION_HANDLE: Dies ist das Standardverhalten. Diese Einstellung bewirkt, dass die COM-Runtime schwerwiegende Ausnahmen behandelt.
  • COMGLB_EXCEPTION_DONOT_HANDLE: Dies bewirkt, dass die COM-Runtime keine schwerwiegenden Ausnahmen behandelt.
  • COMGLB_EXCEPTION_DONOT_HANDLE_FATAL: Alias für COMGLB_EXCEPTION_DONOT_HANDLE. Unterstützt in Windows 7 und höher.
  • COMGLB_EXCEPTION_DONOT_HANDLE_ANY: Wenn festgelegt und eine schwerwiegende Ausnahme in einer COM-Methode auftritt, führt dies dazu, dass die COM-Runtime die Ausnahme nicht behandelt.

    Wenn festgelegt und eine nicht schwerwiegende Ausnahme in einer COM-Methode auftritt, führt dies dazu, dass die COM-Runtime ein Windows-Fehlerberichterstattung -Speicherabbild (WER) erstellt und den Prozess beendet. Unterstützt in Windows 7 und höher.

Standardmäßig behandelt die COM-Runtime schwerwiegende Ausnahmen, die bei Methodenaufrufen ausgelöst werden, indem der RPC_E_SERVERFAULT Fehlercode an den Client zurückgegeben wird. Eine Anwendung deaktiviert dieses Verhalten, um die Weitergabe von Ausnahmen an WER zuzulassen, wodurch Anwendungsprozessabbilder erstellt und die Anwendung beendet wird. Dies verhindert eine mögliche Datenbeschädigung und ermöglicht es einem Anwendungshersteller, die Speicherabbilder zu debuggen.
Hinweis Selbst wenn die Ausnahmebehandlung der COM-Laufzeit deaktiviert ist, werden Ausnahmen möglicherweise nicht an WER weitergegeben, wenn ein anderer Ausnahmehandler auf Anwendungsebene im Prozess vorhanden ist, der die Ausnahme behandelt.
 
Für neue Anwendungen wird empfohlen, die eigenschaft COMGLB_EXCEPTION_HANDLING auf COMGLB_EXCEPTION_DONOT_HANDLE_ANY festzulegen.
COMGLB_RPC_THREADPOOL_SETTING Mögliche Werte für die COMGLB_RPC_THREADPOOL_SETTING-Eigenschaft in der Set-Methode sind:
  • COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL: Weist RPC an, einen dedizierten privaten Threadpool zu verwenden.
Mögliche Werte für die COMGLB_RPC_THREADPOOL_SETTING-Eigenschaft in der Query-Methode :
  • COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL: RPC verwendet einen dedizierten privaten Threadpool.
  • COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL: RPC verwendet den Standardthreadpool des Systems.
RPC verwendet standardmäßig den Systemthreadpool in Windows 7. Da der Systemthreadpool von mehreren Komponenten im Prozess gemeinsam genutzt wird, verhalten sich COM- und RPC-Vorgänge möglicherweise falsch, wenn der Threadpoolstatus durch eine Komponente beschädigt wird.

Die eigenschaft COMGLB_RPC_THREADPOOL_SETTING kann verwendet werden, um das Verhalten des RPC-Threadpools zu ändern. Das Ändern des Standardverhaltens führt zu einer Leistungseinbuße, da RPC dadurch einen zusätzlichen Thread verwendet. Daher sollte beim Ändern dieser Einstellung Vorsicht walten lassen. Es wird empfohlen, diese Einstellung nur aus Gründen der Anwendungskompatibilität zu ändern.

Hinweis Diese Eigenschaft muss unmittelbar nach der COM-Initialisierung im Prozess festgelegt werden. Wenn diese Eigenschaft nach dem Ausführen von Vorgängen festgelegt wird, die dazu führen, dass COM den RPC-Kanal initialisiert (z. B. Marshalling oder Entmarshalling von Objektverweisen), schlägt die Set-Methode fehl.
 
Hinweis Diese Eigenschaft wird nur in Windows 7 und höheren Versionen von Windows unterstützt.
COMGLB_RO_SETTINGS Mögliche Werte für die COMGLB_RO_SETTINGS-Eigenschaft sind:
  • COMGLB_FAST_RUNDOWN: Gibt an, dass Stubs im aktuellen Prozess schnellem Stubrundownverhalten unterliegen, was bedeutet, dass Stubs beim Beenden des Clientprozesses heruntergefahren werden, anstatt darauf zu warten, dass normale Bereinigungstimeouts ablaufen.
  • COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES: Entfernen Sie Touchnachrichten aus der Nachrichtenwarteschlange in der modalen STA-Schleife.
  • COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES: Eingabenachrichten werden in der modalen STA-Schleife entfernt, wenn die Nachrichtenwarteschlange des Threads angefügt ist.
  • COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES: Eingabenachrichten werden nicht in der modalen STA-Schleife entfernt, wenn die Nachrichtenwarteschlange des Threads angefügt ist.
  • COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES: Zeigereingabenachrichten werden nicht in der modalen STA-Schleife entfernt, wenn die Nachrichtenwarteschlange des Threads angefügt ist, aber vorübergehend maskiert werden, um Deadlocks zu vermeiden, die aus der angefügten Warteschlange entstehen.
  • COMGLB_RESERVED1: Für zukünftige Verwendung reserviert.
  • COMGLB_RESERVED2: Für zukünftige Verwendung reserviert.
  • COMGLB_RESERVED3: Für zukünftige Verwendung reserviert.
Hinweis Diese Eigenschaft wird nur in Windows 8 und höheren Versionen von Windows unterstützt.
COMGLB_UNMARSHALING_POLICY Mögliche Werte für die COMGLB_UNMARSHALING_POLICY-Eigenschaft sind:
  • COMGLB_UNMARSHALING_POLICY_NORMAL: Das Entmarshaling-Verhalten ist dasselbe wie bei Versionen vor Windows 8. EOAC_NO_CUSTOM_MARSHAL Einschränkungen gelten, wenn dieses Flag in CoInitializeSecurity festgelegt ist. Andernfalls gibt es keine Einschränkungen. Dies ist die Standardeinstellung für Prozesse, die sich nicht im App-Container befinden.
  • COMGLB_UNMARSHALING_POLICY_STRONG: Entmarshaling erlaubt nur eine systemvertrauenswürdige Liste von gehärteten Unmarshalern und Unmarshalern, die pro Prozess durch die CoAllowUnmarshalerCLSID-Funktion zulässig sind. Dies ist die Standardeinstellung für Prozesse im App-Container.
  • COMGLB_UNMARSHALING_POLICY_HYBRID: Entmarshaling-Daten, deren Quelle der App-Container ist, erlaubt nur eine systemvertrauenswürdige Liste von gehärteten Unmarshalern und Unmarshalern, die pro Prozess durch die Funktion CoAllowUnmarshalerCLSID zulässig sind. Das Entmarshalingverhalten für Daten mit einer Quelle, die kein App-Container ist, ist gegenüber früheren Versionen unverändert.
Hinweis Diese Eigenschaft wird nur in Windows 8 und höheren Versionen von Windows unterstützt.
 

Es ist wichtig für Anwendungen, die Abstürze und andere Ausnahmen erkennen, die beim Ausführen eingehender COM-Aufrufe generiert werden können, z. B. bei einem Aufruf auf einem lokalen Server oder beim Ausführen der IDropTarget::D rop-Methode , um COMGLB_EXCEPTION_HANDLING auf COMGLB_EXCEPTION_DONOT_HANDLE festzulegen, um das COM-Verhalten beim Abfangen von Ausnahmen zu deaktivieren. Andernfalls kann dies zu einem beschädigten Prozesszustand führen, z. B. werden Sperren abgebrochen, wenn diese Ausnahmen ausgelöst werden, und der Prozess könnte in einen inkonsistenten Zustand wechseln.

Alle solchen Anwendungen sollten diesen Code beim Start ausführen.

    IGlobalOptions *pGlobalOptions;
    hr =  CoCreateInstance(CLSID_GlobalOptions, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pGlobalOptions));
    if (SUCCEEDED(hr))
    {
        hr = pGlobalOptions->Set(COMGLB_EXCEPTION_HANDLING, COMGLB_EXCEPTION_DONOT_HANDLE);
        pGlobalOptions->Release();
    }

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile objidlbase.h (include ObjIdl.h)

Weitere Informationen

IMarshalingStream