Metodo IMarshal::D isconnectObject (objidlbase.h)

Rilascia tutte le connessioni a un oggetto. Il server dell'oggetto chiama l'implementazione dell'oggetto di questo metodo prima di arrestare.

Sintassi

HRESULT DisconnectObject(
  [in] DWORD dwReserved
);

Parametri

[in] dwReserved

Questo parametro è riservato e deve essere 0.

Valore restituito

Se il metodo ha esito positivo, il valore restituito è S_OK. In caso contrario, è E_FAIL.

Commenti

Questo metodo viene implementato nell'oggetto, non nel proxy.

Note ai chiamanti

Il solito caso in cui questo metodo viene chiamato si verifica quando un utente finale chiude in modo forcibly un server COM con uno o più oggetti in esecuzione che implementano IMarshal. Prima di arrestare, il server chiama la funzione CoDisconnectObject per rilasciare connessioni esterne a tutti gli oggetti in esecuzione. Per ogni oggetto che implementa IMarshal, tuttavia, questa funzione chiama DisconnectObject in modo che ogni oggetto che gestisce il proprio marshalling possa eseguire passaggi per notificare al proxy che sta per arrestare.

Note per gli implementatori

Come parte del codice di arresto normale, un server deve chiamare CoDisconnectObject, che a sua volta chiama DisconnectObject, in ogni oggetto in esecuzione che implementa IMarshal.

Il risultato di qualsiasi implementazione di questo metodo deve essere quello di consentire a un proxy di rispondere a tutte le chiamate successive dal client restituendo RPC_E_DISCONNECTED o CO_E_OBJNOTCONNECTED anziché tentare di inoltrare le chiamate all'oggetto originale. È necessario che il client elimini il proxy.

Se si implementa questo metodo per un oggetto non modificabile, ad esempio un moniker, l'implementazione non deve eseguire alcuna operazione perché tali oggetti vengono in genere copiati interi nello spazio indirizzi del client. Pertanto, non hanno né un proxy né una connessione all'oggetto originale. Per altre informazioni sul marshalling di oggetti non modificabili, vedere la sezione "Quando implementare" dell'argomento IMarshal .

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 objidlbase.h (include ObjIdl.h)

Vedi anche

CoDisconnectObject

IMarshal