Funzione CoUnmarshalInterface (combaseapi.h)
Inizializza un proxy appena creato usando i dati scritti nel flusso da una chiamata precedente alla funzione CoMarshalInterface e restituisce un puntatore di interfaccia a tale proxy.
Sintassi
HRESULT CoUnmarshalInterface(
[in] LPSTREAM pStm,
[in] REFIID riid,
[out] LPVOID *ppv
);
Parametri
[in] pStm
Puntatore al flusso da cui l'interfaccia deve essere annullata.
[in] riid
Riferimento all'identificatore dell'interfaccia da annullare. Per IID_NULL, l'interfaccia restituita è quella definita dal flusso, objref.iid.
[out] ppv
Indirizzo della variabile del puntatore che riceve il puntatore di interfaccia richiesto in riid. Al termine della restituzione, *ppv contiene il puntatore di interfaccia richiesto per l'interfaccia nonmarshaled.
Valore restituito
Questa funzione può restituire il valore restituito standard E_FAIL, gli errori restituiti da CoCreateInstance e i valori seguenti.
Codice restituito | Descrizione |
---|---|
|
Il puntatore all'interfaccia è stato scollegato correttamente. |
|
pStm è un puntatore non valido. |
|
La funzione CoInitialize o OleInitialize non è stata chiamata nel thread corrente prima della chiamata di questa funzione. |
|
L'applicazione oggetto è stata disconnessa dal sistema di comunicazione remota, ad esempio in seguito a una chiamata alla funzione CoDisconnectObject . |
|
Errore durante la lettura del database di registrazione. |
|
QueryInterface finale di questa funzione per l'interfaccia richiesta restituita E_NOINTERFACE. |
Commenti
Nota sulla sicurezza: la chiamata a questo metodo con dati non attendibili è un rischio per la sicurezza. Chiamare questo metodo solo con dati attendibili.
- Legge dal flusso il CLSID da usare per creare un'istanza del proxy.
- Ottiene un puntatore IMarshal al proxy che deve eseguire l'annullamento delmarshaling. Se l'oggetto utilizza l'implementazione predefinita del marshalling COM, il puntatore ottenuto è quindi un'istanza dell'oggetto proxy generico. Se il marshalling si verifica tra due thread nello stesso processo, il puntatore è a un'istanza del gestore di marshalling senza thread in-process. Se l'oggetto fornisce il proprio codice di marshalling, CoUnmarshalInterface chiama la funzione CoCreateInstance , passando il CLSID letto dal flusso di marshalling. CoCreateInstance crea un'istanza del proxy dell'oggetto e restituisce un puntatore all'interfaccia IMarshal al proxy.
- Usando il puntatore di interfaccia IMarshal acquisito, la funzione chiama quindi IMarshal::UnmarshalInterface e, se appropriato, IMarshal::ReleaseMarshalData.
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 |