La méthode IGlobalOptions ::Set (objidl.h) définit la propriété globale spécifiée du runtime COM.
Remarques
Les propriétés globales suivantes du runtime COM peuvent être définies et interrogées avec cette interface.
Propriété
Valeurs
COMGLB_APPID
AppID pour le processus.
Il s’agit de la seule propriété prise en charge sur Windows XP.
COMGLB_EXCEPTION_HANDLING
Les valeurs possibles pour la propriété COMGLB_EXCEPTION_HANDLING sont les suivantes :
COMGLB_EXCEPTION_HANDLE : il s’agit du comportement par défaut. Ce paramètre oblige le runtime COM à gérer les exceptions irrécupérables.
COMGLB_EXCEPTION_DONOT_HANDLE : le runtime COM ne gère donc pas les exceptions irrécupérables.
COMGLB_EXCEPTION_DONOT_HANDLE_FATAL : alias pour COMGLB_EXCEPTION_DONOT_HANDLE. Pris en charge dans Windows 7 et versions ultérieures.
COMGLB_EXCEPTION_DONOT_HANDLE_ANY : lorsqu’une exception irrécupérable est définie et qu’une exception irrécupérable se produit dans une méthode COM, le runtime COM ne gère pas l’exception.
Lorsqu’une exception est définie et qu’une exception non irrécupérable se produit dans une méthode COM, le runtime COM crée un vidage Rapport d'erreurs Windows (WER) et arrête le processus.
Pris en charge dans Windows 7 et versions ultérieures.
Par défaut, le runtime COM gère les exceptions irrécupérables déclenchées pendant les appels de méthode en retournant le code d’erreur RPC_E_SERVERFAULT au client. Une application désactive ce comportement pour autoriser les exceptions à se propager à WER, ce qui crée des vidages de processus d’application et termine l’application. Cela empêche toute altération possible des données et permet à un fournisseur d’application de déboguer les vidages.
Note Même si la gestion des exceptions du runtime COM est désactivée, les exceptions peuvent ne pas se propager à WER s’il existe un autre gestionnaire d’exceptions au niveau de l’application dans le processus qui gère l’exception.
Pour les nouvelles applications, il est recommandé de définir la propriété COMGLB_EXCEPTION_HANDLING sur COMGLB_EXCEPTION_DONOT_HANDLE_ANY.
COMGLB_RPC_THREADPOOL_SETTING
Les valeurs possibles pour la propriété COMGLB_RPC_THREADPOOL_SETTING dans la méthode Set sont les suivantes :
COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL : indique à RPC d’utiliser un pool de threads privé dédié.
Les valeurs possibles pour la propriété COMGLB_RPC_THREADPOOL_SETTING dans la méthode Query sont les suivantes :
COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL : RPC utilise un pool de threads privé dédié.
COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL : RPC utilise le pool de threads par défaut du système.
RPC utilise le pool de threads système par défaut dans Windows 7. Étant donné que le pool de threads système est partagé par plusieurs composants du processus, les opérations COM et RPC peuvent se comporter incorrectement si l’état du pool de threads est endommagé par un composant.
La propriété COMGLB_RPC_THREADPOOL_SETTING peut être utilisée pour modifier le comportement du pool de threads RPC. La modification du comportement par défaut entraîne une pénalité de performances, car rpc utilise alors un thread supplémentaire. Par conséquent, vous devez faire preuve de prudence lors de la modification de ce paramètre. Il est recommandé de modifier ce paramètre uniquement pour des raisons de compatibilité des applications.
Note Cette propriété doit être définie immédiatement après l’initialisation de COM dans le processus. Si cette propriété est définie après avoir effectué des opérations qui provoquent l’initialisation du canal RPC par COM (par exemple, le marshaling ou le démarshalling des références d’objets), la méthode Set échoue.
Note Cette propriété est uniquement prise en charge dans Windows 7 et les versions ultérieures de Windows.
COMGLB_RO_SETTINGS
Les valeurs possibles pour la propriété COMGLB_RO_SETTINGS sont les suivantes :
COMGLB_FAST_RUNDOWN : indique que les stubs dans le processus actuel sont soumis à un comportement d’arrêt de stub rapide, ce qui signifie que les stubs sont exécutés à l’arrêt du processus client, au lieu d’attendre l’expiration des délais d’expiration de nettoyage normaux.
COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES : supprimez les messages tactiles de la file d’attente des messages dans la boucle modale STA.
COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES : les messages d’entrée sont supprimés dans la boucle modale STA lorsque la file d’attente de messages du thread est attachée.
COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES : les messages d’entrée ne sont pas supprimés dans la boucle modale STA lorsque la file d’attente de messages du thread est attachée.
COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES : les messages d’entrée de pointeur ne sont pas supprimés dans la boucle modale STA lorsque la file d’attente de messages du thread est attachée, mais sont temporairement masqués pour éviter les interblocages résultant de la file d’attente attachée.
COMGLB_RESERVED1 : réservé pour une utilisation ultérieure.
COMGLB_RESERVED2 : réservé pour une utilisation ultérieure.
COMGLB_RESERVED3 : réservé pour une utilisation ultérieure.
Note Cette propriété est uniquement prise en charge dans Windows 8 et versions ultérieures de Windows.
COMGLB_UNMARSHALING_POLICY
Les valeurs possibles pour la propriété COMGLB_UNMARSHALING_POLICY sont les suivantes :
COMGLB_UNMARSHALING_POLICY_NORMAL : le comportement de démarshalation est le même que celui des versions antérieures à Windows 8.
EOAC_NO_CUSTOM_MARSHAL restrictions s’appliquent si cet indicateur est défini dans CoInitializeSecurity. Sinon, il n’y a aucune restriction. Il s’agit de la valeur par défaut pour les processus qui ne sont pas dans le conteneur d’application.
COMGLB_UNMARSHALING_POLICY_STRONG : le démarshalation autorise uniquement une liste approuvée par le système des unmarshalers renforcés et des démarshalateurs autorisés par processus par la fonction CoAllowUnmarshalerCLSID . Il s’agit de la valeur par défaut pour les processus dans le conteneur d’application.
COMGLB_UNMARSHALING_POLICY_HYBRID : Le démarshalation des données dont la source est le conteneur d’application autorise uniquement une liste approuvée par le système des unmarshalers renforcés et des démarshalateurs autorisés par processus par la fonction CoAllowUnmarshalerCLSID . Le comportement de démarshalation des données avec une source qui n’est pas un conteneur d’application est inchangé par rapport aux versions précédentes.
Note Cette propriété est uniquement prise en charge dans Windows 8 et versions ultérieures de Windows.
Il est important que les applications qui détectent les incidents et d’autres exceptions qui peuvent être générées lors de l’exécution d’appels COM entrants, par exemple un appel sur un serveur local ou lors de l’exécution de la méthode IDropTarget ::D rop , définissent COMGLB_EXCEPTION_HANDLING sur COMGLB_EXCEPTION_DONOT_HANDLE pour désactiver le comportement COM d’interception des exceptions. Si vous ne le faites pas, l’état du processus peut être endommagé, par exemple, les verrous conservés lorsque ces exceptions sont levées sont abandonnés et le processus peut entrer dans un état incohérent.
Toutes ces applications doivent exécuter ce code au démarrage.