Condividi tramite


Funzione CoGetDefaultContext (combaseapi.h)

Recupera un riferimento al contesto predefinito dell'appartamento specificato.

Sintassi

HRESULT CoGetDefaultContext(
  [in]  APTTYPE aptType,
  [in]  REFIID  riid,
  [out] void    **ppv
);

Parametri

[in] aptType

Tipo di appartamento del contesto predefinito richiesto. Questo parametro può avere uno dei valori seguenti.

Valore Significato
APTTYPE_CURRENT
-1
L'appartamento del chiamante.
APTTYPE_MTA
1
L'appartamento multithreaded per il processo corrente.
APTTYPE_NA
2
L'appartamento neutrale per il processo corrente.
APTTYPE_MAINSTA
3
Il principale appartamento a thread singolo per il processo corrente.
 

Il valore APTTYPE APTTYPE_STA (0) non è supportato. Un processo può contenere più appartamenti a thread singolo, ognuno con il proprio contesto, in modo che CoGetDefaultContext non possa determinare quale STA è di interesse. Pertanto, questa funzione restituisce E_INVALIDARG se è specificato APTTYPE_STA.

[in] riid

Identificatore dell'interfaccia (IID) dell'interfaccia richiesta nel contesto predefinito. In genere, il chiamante richiede IID_IObjectContext. Il contesto predefinito non supporta tutte le interfacce del contesto dell'oggetto normale.

[out] ppv

Riferimento all'interfaccia specificata da riid nel contesto predefinito. Se il componente dell'oggetto non è configurato, ovvero il componente dell'oggetto non è stato importato in un'applicazione COM+ o se la funzione CoGetDefaultContext viene chiamata da un costruttore o da un metodo IUnknown , questo parametro è impostato su un puntatore NULL .

Valore restituito

Questo metodo può restituire i valori seguenti.

Codice restituito Descrizione
S_OK
Metodo completato correttamente.
E_INVALIDARG
Uno dei parametri non è valido.
CO_E_NOTINITIALIZED
Il chiamante non si trova in un appartamento inizializzato.
E_NOINTERFACE
Il contesto dell'oggetto non supporta l'interfaccia specificata da riid.

Commenti

Ogni appartamento COM ha un contesto speciale denominato contesto predefinito. Un contesto predefinito è diverso da tutti gli altri contesti non predefiniti in un appartamento perché non fornisce servizi di runtime. Non supporta tutte le normali interfacce di contesto dell'oggetto.

Il contesto predefinito viene usato anche da istanze di componenti COM non configurati, ovvero componenti che non fanno parte di un'applicazione COM+, quando vengono creati da un appartamento che non supporta il modello di threading. In altre parole, se un oggetto COM crea un'istanza di un componente non configurato e il nuovo oggetto non può essere aggiunto al contesto del relativo creatore a causa del relativo modello di threading, il nuovo oggetto viene invece aggiunto al contesto predefinito di un appartamento che supporta il modello di threading.

Un oggetto non deve mai passare un riferimento IObjectContext a un altro oggetto. Se si passa un riferimento IObjectContext a un altro oggetto, non è più un riferimento valido.

Quando un oggetto ottiene un riferimento a un oggetto IObjectContext, deve rilasciare l'oggetto IObjectContext al termine dell'oggetto.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione combaseapi.h
Libreria Ole32.lib
DLL Ole32.dll

Vedi anche

Contesti e threading COM+