Condividi tramite


Metodo ICallFrame::Marshallal (callobj.h)

Esegue il marshalling del frame di chiamata trasformando i dati raggiungibili in un buffer flat senza disturbare il frame.

Sintassi

HRESULT Marshal(
  [in]  CALLFRAME_MARSHALCONTEXT *pmshlContext,
  [in]  MSHLFLAGS                mshlflags,
  [in]  PVOID                    pBuffer,
  [in]  ULONG                    cbBuffer,
  [out] ULONG                    *pcbBufferUsed,
  [out] RPCOLEDATAREP            *pdataRep,
  [out] ULONG                    *prpcFlags
);

Parametri

[in] pmshlContext

Puntatore alla struttura CALLFRAME_MARSHALCONTEXT contenente informazioni sul contesto relative al modo in cui viene eseguito il marshalling.

[in] mshlflags

Flag che indica se i dati da eseguire per il marshalling devono essere trasmessi al processo client, ovvero il caso normale o scritto in una tabella globale, in cui può essere recuperato da più client. I valori possibili sono dall'enumerazione MSHLFLAGS .

[in] pBuffer

Puntatore al buffer in cui devono essere inseriti i dati con marshalling.

[in] cbBuffer

Dimensioni del buffer, in byte.

[out] pcbBufferUsed

Riceve le dimensioni del buffer effettivamente usato. Questo parametro è facoltativo e,

[out] pdataRep

Riceve la rappresentazione dei dati NDR con cui è stato eseguito il marshalling dei dati. Questo parametro è facoltativo e, Per altre informazioni, vedere IRpcChannelBuffer::GetBuffer.

[out] prpcFlags

Riceve un flag RPC associato alla chiamata. Questo parametro è facoltativo e, Per altre informazioni, vedere IRpcChannelBuffer::GetBuffer.

Valore restituito

Questo metodo può restituire i valori seguenti.

Codice restituito Descrizione
S_OK
Metodo completato correttamente.
E_UNEXPECTED
Si è verificato un errore imprevisto.

Commenti

Quando si esegue il marshalling delle versioni [In] dei parametri [in, out] sono presenti e le versioni [out] non sono definiti. Quando si esegue il marshalling dei parametri [out] i valori sono validi.

Se questo metodo restituisce un errore, il chiamante non sarà in grado di pulirlo. Le risorse come la memoria allocata temporaneamente durante il marshalling tentato sono state liberate.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione callobj.h

Vedi anche

ICallFrame