Condividi tramite


Funzione OleInitialize (ole2.h)

Inizializza la libreria COM nell'apartment corrente, identifica il modello di concorrenza come apartment a thread singolo (STA) e abilita funzionalità aggiuntive descritte nella sezione Osservazioni di seguito. Le applicazioni devono inizializzare la libreria COM prima di poter chiamare funzioni di libreria COM diverse da CoGetMalloc e funzioni di allocazione della memoria.

Sintassi

HRESULT OleInitialize(
  [in] LPVOID pvReserved
);

Parametri

[in] pvReserved

Questo parametro è riservato e deve essere NULL.

Valore restituito

Questa funzione restituisce S_OK in caso di esito positivo. Altri valori possibili includono quanto segue.

Codice restituito Descrizione
S_FALSE
La libreria COM è già inizializzata in questo appartamento.
OLE_E_WRONGCOMPOBJ
Le versioni di COMPOBJ.DLL e di OLE2.DLL nel computer sono incompatibili tra loro.
RPC_E_CHANGED_MODE
Una chiamata precedente a CoInitializeEx ha specificato il modello di concorrenza per questo apartment come apartment multithread (MTA). Ciò potrebbe anche significare che si è verificato un cambiamento da apartment threaded neutro a apartment a thread singolo.

Commenti

Le applicazioni che usano la funzionalità seguente devono chiamare OleInitialize prima di chiamare qualsiasi altra funzione nella libreria COM:

  • Appunti
  • Trascinamento e rilascio
  • Collegamento e incorporamento di oggetti (OLE)
  • Attivazione sul posto
OleInitialize chiama CoInitializeEx internamente per inizializzare la libreria COM nell'apartment corrente. Poiché le operazioni OLE non sono thread-safe, OleInitialize specifica il modello di concorrenza come apartment a thread singolo.

Una volta impostato il modello di concorrenza per un apartment, non può essere modificato. Una chiamata a OleInitialize su un apartment inizializzato in precedenza come multithreading avrà esito negativo e restituirà RPC_E_CHANGED_MODE.

È necessario inizializzare la libreria COM in un apartment prima di chiamare una qualsiasi delle funzioni di libreria ad eccezione di CoGetMalloc, per ottenere un puntatore all'allocatore standard e le funzioni di allocazione della memoria.

In genere, la libreria COM viene inizializzata in un appartamento una sola volta. Le chiamate successive avranno esito positivo, purché non tentino di modificare il modello di concorrenza dell'apartment, ma restituiranno S_FALSE. Per chiudere normalmente la libreria COM, ogni chiamata riuscita a OleInitialize, incluse quelle che restituiscono S_FALSE, deve essere bilanciata da una chiamata corrispondente a OleUninitialize.

Poiché non è possibile controllare l'ordine in cui i server in-process vengono caricati o scaricati, non chiamare OleInitialize o OleUninitialize dalla funzione DllMain .

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione ole2.h
Libreria Ole32.lib
DLL Ole32.dll
Set di API ext-ms-win-com-ole32-l1-1-0 (introdotto in Windows 8)

Vedi anche

CoInitializeEx

OleInitialize

OleUninitialize