Condividi tramite


Metodo IMarshal::D isconnectObject (objidl.h)

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

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 viene S_OK. In caso contrario, è E_FAIL.

Commenti

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

Note ai chiamanti

Il caso consueto in cui questo metodo viene chiamato si verifica quando un utente finale chiude forzatamente 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 essere arrestato.

Note per gli implementatori

Come parte del codice di arresto normale, un server deve chiamare CoDisconnectObject, che a sua volta chiama DisconnectObject, su ognuno dei relativi oggetti 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. Spetta al client distruggere 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 objidl.h (include ObjIdl.h)

Vedi anche

CoDisconnectObject

IMarshal