Condividi tramite


Interfaccia IGlobalOptions (objidl.h)

Imposta ed esegue query sulle proprietà globali del runtime COM (Component Object Model).

Ereditarietà

L'interfaccia IGlobalOptions eredita dall'interfaccia IUnknown . IGlobalOptions include anche questi tipi di membri:

Metodi

L'interfaccia IGlobalOptions include questi metodi.

 
IGlobalOptions::Query

Il metodo IGlobalOptions::Query (objidl.h) esegue una query sulla proprietà globale specificata del runtime COM.
IGlobalOptions::Set

Il metodo IGlobalOptions::Set (objidl.h) imposta la proprietà globale specificata del runtime COM.

Commenti

È possibile impostare ed eseguire query sulle proprietà globali seguenti del runtime COM con questa interfaccia.

Proprietà Valori
COMGLB_APPID Id app per il processo. Questa è l'unica proprietà supportata in Windows XP.
COMGLB_EXCEPTION_HANDLING I valori possibili per la proprietà COMGLB_EXCEPTION_HANDLING sono:
  • COMGLB_EXCEPTION_HANDLE: si tratta del comportamento predefinito. Questa impostazione fa sì che il runtime COM gestisca le eccezioni irreversibili.
  • COMGLB_EXCEPTION_DONOT_HANDLE: in questo modo il runtime COM non gestisce le eccezioni irreversibili.
  • COMGLB_EXCEPTION_DONOT_HANDLE_FATAL: alias per COMGLB_EXCEPTION_DONOT_HANDLE. Supportato in Windows 7 e versioni successive.
  • COMGLB_EXCEPTION_DONOT_HANDLE_ANY: se impostato e si verifica un'eccezione irreversibile in un metodo COM, il runtime COM non gestisce l'eccezione.

    Se impostato e si verifica un'eccezione non irreversibile in un metodo COM, il runtime COM crea un dump di Segnalazione errori Windows (WER) e termina il processo. Supportato in Windows 7 e versioni successive.

Per impostazione predefinita, il runtime COM gestisce le eccezioni irreversibili generate durante le chiamate al metodo restituendo il codice di errore RPC_E_SERVERFAULT al client. Un'applicazione disabilita questo comportamento per consentire la propagazione delle eccezioni in WER, che crea dump del processo dell'applicazione e termina l'applicazione. Ciò impedisce il danneggiamento dei dati e consente a un fornitore di applicazioni di eseguire il debug dei dump.
Nota Anche se la gestione delle eccezioni di runtime COM è disabilitata, le eccezioni potrebbero non essere propagate a WER se è presente un altro gestore di eccezioni a livello di applicazione nel processo che gestisce l'eccezione.
 
Per le nuove applicazioni, è consigliabile impostare la proprietà COMGLB_EXCEPTION_HANDLING su COMGLB_EXCEPTION_DONOT_HANDLE_ANY.
COMGLB_RPC_THREADPOOL_SETTING I valori possibili per la proprietà COMGLB_RPC_THREADPOOL_SETTING nel metodo Set sono:
  • COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL: indica a RPC di usare un pool di thread privato dedicato.
I valori possibili per la proprietà COMGLB_RPC_THREADPOOL_SETTING nel metodo Query sono:
  • COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL: RPC usa un pool di thread privato dedicato.
  • COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL: RPC usa il pool di thread predefinito del sistema.
RPC usa il pool di thread di sistema per impostazione predefinita in Windows 7. Poiché il pool di thread di sistema è condiviso da più componenti nel processo, le operazioni COM e RPC possono comportarsi in modo errato se lo stato del pool di thread è danneggiato da un componente.

La proprietà COMGLB_RPC_THREADPOOL_SETTING può essere usata per modificare il comportamento del pool di thread RPC. La modifica del comportamento predefinito comporta una penalità per le prestazioni perché in questo modo RPC usa un thread aggiuntivo. Pertanto, è necessario prestare attenzione quando si modifica questa impostazione. È consigliabile modificare questa impostazione solo per motivi di compatibilità delle applicazioni.

Nota Questa proprietà deve essere impostata immediatamente dopo l'inizializzazione di COM nel processo. Se questa proprietà viene impostata dopo l'esecuzione di tutte le operazioni che causano l'inizializzazione del canale RPC da parte di COM, ad esempio il marshalling o il marshalling dei riferimenti agli oggetti, il metodo Set avrà esito negativo.
 
Nota Questa proprietà è supportata solo in Windows 7 e versioni successive di Windows.
COMGLB_RO_SETTINGS I valori possibili per la proprietà COMGLB_RO_SETTINGS sono:
  • COMGLB_FAST_RUNDOWN: indica che gli stub nel processo corrente sono sottoposti a un comportamento rapido di rundown dello stub, il che significa che gli stub vengono eseguiti al termine del processo client, anziché attendere la scadenza dei normali timeout di pulizia.
  • COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES: rimuovere i messaggi di tocco dalla coda dei messaggi nel ciclo modale STA.
  • COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES: i messaggi di input vengono rimossi nel ciclo modale STA quando la coda di messaggi del thread è collegata.
  • COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES: i messaggi di input non vengono rimossi nel ciclo modale STA quando la coda di messaggi del thread è collegata.
  • COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES: i messaggi di input del puntatore non vengono rimossi nel ciclo modale STA quando la coda di messaggi del thread è collegata, ma vengono mascherati temporaneamente per evitare deadlock derivanti dalla coda collegata.
  • COMGLB_RESERVED1: riservato per uso futuro.
  • COMGLB_RESERVED2: riservato per uso futuro.
  • COMGLB_RESERVED3: riservato per uso futuro.
Nota Questa proprietà è supportata solo in Windows 8 e versioni successive di Windows.
COMGLB_UNMARSHALING_POLICY I valori possibili per la proprietà COMGLB_UNMARSHALING_POLICY sono:
  • COMGLB_UNMARSHALING_POLICY_NORMAL: il comportamento di annullamento delmarshaling corrisponde a quello delle versioni precedenti a Windows 8. EOAC_NO_CUSTOM_MARSHAL restrizioni si applicano se questo flag è impostato in CoInitializeSecurity. In caso contrario, non sono previste restrizioni. Si tratta dell'impostazione predefinita per i processi che non si trovano nel contenitore dell'app.
  • COMGLB_UNMARSHALING_POLICY_STRONG: Unmarshaling consente solo un elenco attendibile di sistema di nonmarshalers e unmarshalers consentiti per processo dalla funzione CoAllowUnmarshalerCLSID . Si tratta dell'impostazione predefinita per i processi nel contenitore dell'app.
  • COMGLB_UNMARSHALING_POLICY_HYBRID: unmarshaling dei dati il cui origine è contenitore di app consente solo un elenco attendibile del sistema di nonmarshalers e unmarshalers consentiti per processo dalla funzione CoAllowUnmarshalerCLSID . Il comportamento di annullamento delmarshaling per i dati con un'origine che non è un contenitore di app rimane invariato rispetto alle versioni precedenti.
Nota Questa proprietà è supportata solo in Windows 8 e versioni successive di Windows.
 

È importante per le applicazioni che rilevano arresti anomali e altre eccezioni che potrebbero essere generate durante l'esecuzione di chiamate COM in ingresso, ad esempio una chiamata su un server locale o quando si esegue il metodo IDropTarget::D rop , per impostare COMGLB_EXCEPTION_HANDLING su COMGLB_EXCEPTION_DONOT_HANDLE per disabilitare il comportamento COM di intercettare le eccezioni. In caso contrario, questo può causare un danneggiamento dello stato del processo, ad esempio i blocchi mantenuti quando vengono generate queste eccezioni vengono abbandonate e il processo potrebbe entrare in uno stato incoerente.

Tutte queste applicazioni devono eseguire questo codice all'avvio.

    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();
    }

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione objidl.h (include ObjIdl.h)

Vedi anche

IMarshalingStream