Funzione CoGetStandardMarshal (combaseapi.h)
Crea un oggetto di marshalling predefinito, o standard, nel processo client o nel processo server, a seconda del chiamante e restituisce un puntatore all'implementazione IMarshal dell'oggetto.
Sintassi
HRESULT CoGetStandardMarshal(
[in] REFIID riid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwDestContext,
[in, optional] LPVOID pvDestContext,
[in] DWORD mshlflags,
[out] LPMARSHAL *ppMarshal
);
Parametri
[in] riid
Riferimento all'identificatore dell'interfaccia il cui puntatore deve essere sottoposto a marshalling. Questa interfaccia deve essere derivata dall'interfaccia IUnknown .
[in] pUnk
Puntatore all'interfaccia di cui eseguire il marshalling.
[in] dwDestContext
Contesto di destinazione in cui l'interfaccia specificata deve essere annullata. I valori provengono dall'enumerazione MSHCTX. Unmarshaling può verificarsi in un altro apartment del processo corrente (MSHCTX_INPROC) o in un altro processo nello stesso computer del processo corrente (MSHCTX_LOCAL).
[in, optional] pvDestContext
Questo parametro è riservato e deve essere NULL.
[in] mshlflags
Indica se i dati da sottoporre a marshalling devono essere trasmessi al processo client (caso normale) o scritti in una tabella globale in cui è possibile recuperarlo da più client. I valori provengono dall'enumerazione MSHLFLAGS .
[out] ppMarshal
Indirizzo della variabile puntatore IMarshal* che riceve il puntatore dell'interfaccia al gestore di marshalling standard.
Valore restituito
Questa funzione può restituire i valori restituiti standard E_FAIL, E_OUTOFMEMORY e E_UNEXPECTED, nonché i valori seguenti.
Codice restituito | Descrizione |
---|---|
|
L'istanza di IMarshal è stata restituita correttamente. |
|
Prima di poter chiamare questa funzione, è necessario chiamare la funzione CoInitialize o OleInitialize nel thread corrente. |
Commenti
La funzione CoGetStandardMarshal crea un oggetto di marshalling predefinito, o standard, nel processo client o nel processo server, come potrebbe essere necessario e restituisce il puntatore IMarshal dell'oggetto al chiamante. Se si implementa IMarshal, è possibile che l'implementazione chiami CoGetStandardMarshal come modo per delegare all'implementazione predefinita di COM qualsiasi contesto di destinazione che non si capisce completamente o si vuole gestire. In caso contrario, è possibile ignorare questa funzione, che com chiama come parte delle procedure di marshalling interne.
Quando la libreria COM nel processo client riceve un puntatore di interfaccia di cui è stato eseguito il marshalling, cerca un CLSID da usare per la creazione di un proxy ai fini dell'annullamento delmarshaling del pacchetto. Se il pacchetto non contiene un CLSID per il proxy, COM chiama CoGetStandardMarshal, passando un valore pUnkNULL. Questa funzione crea un proxy standard nel processo client e restituisce un puntatore all'implementazione del proxy di IMarshal. COM usa questo puntatore per chiamare CoUnmarshalInterface per recuperare il puntatore all'interfaccia richiesta.
Se l'implementazione dell'applicazione server OLE di IMarshal chiama CoGetStandardMarshal, è necessario passare sia l'IID di (riid) che un puntatore a (pUnk), l'interfaccia richiesta.
Questa funzione esegue le attività seguenti:
- Determina se pUnk è NULL.
- Se pUnk è NULL, crea un proxy di interfaccia standard nel processo client per il riid specificato e restituisce il puntatore IMarshal del proxy.
- Se pUnk non è NULL, verifica se esiste già un gestore di marshalling per l'oggetto, ne crea uno nuovo, se necessario e restituisce il puntatore IMarshal del gestore 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 |