Funzione CoGetMarshalSizeMax (combaseapi.h)
Restituisce un limite superiore sul numero di byte necessari per effettuare il marshalling del puntatore di interfaccia specificato all'oggetto specificato.
Sintassi
HRESULT CoGetMarshalSizeMax(
[out] ULONG *pulSize,
[in] REFIID riid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwDestContext,
[in, optional] LPVOID pvDestContext,
[in] DWORD mshlflags
);
Parametri
[out] pulSize
Puntatore al valore associato superiore per le dimensioni, in byte, del pacchetto di dati da scrivere nel flusso di marshalling. Se questo parametro è 0, la dimensione del pacchetto è sconosciuta.
[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. Questa interfaccia deve essere derivata dall'interfaccia IUnknown .
[in] dwDestContext
Contesto di destinazione in cui l'interfaccia specificata deve essere annullata. I valori per dwDestContext provengono dall'enumerazione MSHCTX.
[in, optional] pvDestContext
Questo parametro è riservato e deve essere NULL.
[in] mshlflags
Indica se i dati di cui eseguire il marshalling devono essere trasmessi al client elaborano il caso normale o vengono scritti in una tabella globale, in cui possono essere recuperati da più client. I valori provengono dall'enumerazione MSHLFLAGS.
Valore restituito
Questa funzione può restituire il valore restituito standard E_UNEXPECTED, nonché i valori seguenti.
Codice restituito | Descrizione |
---|---|
|
Il limite superiore è stato restituito correttamente. |
|
Prima di poter chiamare questa funzione, è necessario chiamare la funzione CoInitialize o OleInitialize . |
Commenti
Questa funzione esegue le attività seguenti:
- Esegue una query sull'oggetto per un puntatore IMarshal o, se l'oggetto non implementa IMarshal, ottiene un puntatore al gestore di marshalling standard COM.
- Usando il puntatore ottenuto nell'elemento precedente, chiama IMarshal::GetMarshalSizeMax.
- Aggiunge al valore restituito dalla chiamata a GetMarshalSizeMax la dimensione dell'intestazione dei dati di marshalling e, possibilmente, quella del CLSID proxy per ottenere le dimensioni massime in byte della quantità di dati da scrivere nel flusso di marshalling.
Il valore restituito da questo metodo è garantito che sia valido solo se lo stato interno dell'oggetto sottoposto a marshalling non cambia. Pertanto, il marshalling effettivo deve essere eseguito immediatamente dopo la restituzione di questa funzione oppure lo stub rischia che l'oggetto, a causa di una modifica dello stato, richieda più memoria di quanto indicato in origine.
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 |