Funzione CoDisconnectObject (combaseapi.h)
Disconnette tutte le connessioni di processo remoto gestite per conto di tutti i puntatori di interfaccia che puntano a un oggetto specificato.
Solo il processo che gestisce effettivamente l'oggetto deve chiamare CoDisconnectObject.
Sintassi
HRESULT CoDisconnectObject(
[in] LPUNKNOWN pUnk,
[in] DWORD dwReserved
);
Parametri
[in] pUnk
Puntatore a qualsiasi interfaccia derivata da IUnknown sull'oggetto da disconnettere.
[in] dwReserved
Questo parametro è riservato e deve essere 0.
Valore restituito
Questa funzione restituisce S_OK per indicare che tutte le connessioni ai processi remoti sono state eliminate correttamente.
Commenti
La funzione CoDisconnectObject consente a un server di disconnettere correttamente tutti i client esterni all'oggetto specificato da pUnk.
Esegue le attività seguenti:
- Verifica se l'oggetto da disconnettere implementa l'interfaccia IMarshal . In tal caso, ottiene il puntatore a tale interfaccia; in caso contrario, ottiene un puntatore all'implementazione IMarshal del gestore di marshalling standard (ad esempio COM).
- Usando il puntatore all'interfaccia IMarshal acquisito, la funzione chiama quindi IMarshal::D isconnectObject per disconnettere tutti i client out-of-process.
Analogamente, un contenitore OLE che supporta collegamenti esterni ai relativi oggetti incorporati può chiamare CoDisconnectObject per eliminare tali collegamenti. Anche in questo caso, questa chiamata viene in genere eseguita in risposta a un utente che chiude l'applicazione. Il contenitore deve prima chiamare IOleObject::Close per tutti gli oggetti OLE, ognuno dei quali deve inviare notifiche IAdviseSink::OnClose ai vari client. Il contenitore può quindi chiamare CoDisconnectObject per chiudere tutte le connessioni esistenti.
CoDisconnectObject non disconnette necessariamente i client out-of-process immediatamente. Se eventuali chiamate di marshalling sono in sospeso nell'oggetto server, CoDisconnectObject disconnette l'oggetto solo quando tali chiamate sono state restituite. Nel frattempo , CoDisconnectObject imposta un flag che causa la restituzione di CO_E_OBJNOTCONNECTED di nuove chiamate di marshalling.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [app desktop | App UWP] |
Server minimo supportato | Windows 2000 Server [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | combaseapi.h (include Objbase.h) |
Libreria | Ole32.lib |
DLL | Ole32.dll |