Condividi tramite


FtmBase (classe)

Rappresenta un oggetto gestore del marshalling a thread libero.

Sintassi

class FtmBase :
    public Microsoft::WRL::Implements<
        Microsoft::WRL::RuntimeClassFlags<WinRtClassicComMix>,
        Microsoft::WRL::CloakedIid<IMarshal>
    >;

Osservazioni:

Per altre informazioni, vedere Classe RuntimeClass.

Membri

Costruttori pubblici

Nome Descrizione
FtmBase::FtmBase Inizializza una nuova istanza della classe FtmBase.

Metodi pubblici

Nome Descrizione
FtmBase::CreateGlobalInterfaceTable Crea una tabella di interfaccia globale (GIT).
FtmBase::D isconnectObject Forcibly rilascia tutte le connessioni esterne a un oggetto . Il server dell'oggetto chiama l'implementazione dell'oggetto di questo metodo prima dell'arresto.
FtmBase::GetMarshalSizeMax Ottiene il limite superiore sul numero di byte necessari per effettuare il marshalling del puntatore di interfaccia specificato sull'oggetto specificato.
FtmBase::GetUnmarshalClass Ottiene il CLSID utilizzato da COM per individuare la DLL contenente il codice per il proxy corrispondente. COM carica questa DLL per creare un'istanza non inizializzata del proxy.
FtmBase::MarshalInterface Scrive in un flusso i dati necessari per inizializzare un oggetto proxy in un processo client.
FtmBase::ReleaseMarshalData Elimina definitivamente un pacchetto di dati sottoposto a marshalling.
FtmBase::UnmarshalInterface Inizializza un proxy appena creato e restituisce un puntatore di interfaccia a tale proxy.

Membri dati pubblici

Nome Descrizione
FtmBase::marshaller_ Contiene un riferimento al gestore di marshalling thread libero.

Gerarchia di ereditarietà

FtmBase

Requisiti

Intestazione: ftm.h

Spazio dei nomi: Microsoft::WRL

FtmBase::CreateGlobalInterfaceTable

Crea una tabella di interfaccia globale (GIT).

static HRESULT CreateGlobalInterfaceTable(
   __out IGlobalInterfaceTable **git
);

Parametri

git
Al termine di questa operazione, un puntatore a una tabella di interfaccia globale.

Valore restituito

S_OK se riesce; in caso contrario, HRESULT indica un errore.

Osservazioni:

Per ulteriori informazioni, vedere IGlobalInterfaceTable.

FtmBase::D isconnectObject

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

STDMETHODIMP DisconnectObject(
   __in DWORD dwReserved
) override;

Parametri

dwReserved
Riservato per utilizzi futuri; deve essere zero.

Valore restituito

S_OK se riesce; in caso contrario, HRESULT indica un errore.

FtmBase::FtmBase

Inizializza una nuova istanza della classe FtmBase.

FtmBase();

FtmBase::GetMarshalSizeMax

Ottiene il limite superiore sul numero di byte necessari per effettuare il marshalling del puntatore di interfaccia specificato sull'oggetto specificato.

STDMETHODIMP GetMarshalSizeMax(
   __in REFIID riid,
   __in_opt void *pv,
   __in DWORD dwDestContext,
   __reserved void *pvDestContext,
   __in DWORD mshlflags,
   __out DWORD *pSize
) override;

Parametri

riid
Riferimento all'identificatore dell'interfaccia da sottoporre a marshalling.

Pv
Puntatore di interfaccia da sottoporre a marshalling; può essere NULL.

dwDestContext
Contesto di destinazione in cui l'interfaccia specificata deve essere annullata.

Specificare uno o più valori di enumerazione MSHCTX.

Attualmente, l'annullamento delmarshaling può verificarsi in un altro apartment del processo corrente (MSHCTX_INPROC) o in un altro processo nello stesso computer del processo corrente (MSHCTX_LOCAL).

pvDestContext
Riservato per uso futuro; deve essere NULL.

mshlflags
Flag che indica se i dati da sottoporre a marshalling devono essere trasmessi al processo client, ovvero il caso tipico, o scritti in una tabella globale, in cui è possibile recuperarli da più client. Specificare uno o più valori di enumerazione MSHLFLAGS.

pSize
Al termine di questa operazione, puntatore al limite superiore sulla quantità di dati da scrivere nel flusso di marshalling.

Valore restituito

S_OK se ha esito positivo; in caso contrario, E_FAIL o E_NOINTERFACE.

FtmBase::GetUnmarshalClass

Ottiene il CLSID utilizzato da COM per individuare la DLL contenente il codice per il proxy corrispondente. COM carica questa DLL per creare un'istanza non inizializzata del proxy.

STDMETHODIMP GetUnmarshalClass(
   __in REFIID riid,
   __in_opt void *pv,
   __in DWORD dwDestContext,
   __reserved void *pvDestContext,
   __in DWORD mshlflags,
   __out CLSID *pCid
) override;

Parametri

riid
Riferimento all'identificatore dell'interfaccia da sottoporre a marshalling.

Pv
Puntatore all'interfaccia di cui effettuare il marshalling; può essere NULL se il chiamante non dispone di un puntatore all'interfaccia desiderata.

dwDestContext
Contesto di destinazione in cui l'interfaccia specificata deve essere annullata.

Specificare uno o più valori di 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).

pvDestContext
Riservato per uso futuro; deve essere NULL.

mshlflags
Al termine di questa operazione, puntatore al CLSID da usare per creare un proxy nel processo client.

pCid

Valore restituito

S_OK se ha esito positivo; in caso contrario, S_FALSE.

FtmBase::MarshalInterface

Scrive in un flusso i dati necessari per inizializzare un oggetto proxy in un processo client.

STDMETHODIMP MarshalInterface(
   __in IStream *pStm,
   __in REFIID riid,
   __in_opt void *pv,
   __in DWORD dwDestContext,
   __reserved void *pvDestContext,
   __in DWORD mshlflags
) override;

Parametri

pStm
Puntatore al flusso da usare durante il marshalling.

riid
Riferimento all'identificatore dell'interfaccia da sottoporre a marshalling. Tale interfaccia deve derivare dall'interfaccia IUnknown .

Pv
Puntatore al puntatore dell'interfaccia da sottoporre a marshalling; può essere NULL se il chiamante non dispone di un puntatore all'interfaccia desiderata.

dwDestContext
Contesto di destinazione in cui l'interfaccia specificata deve essere annullata.

Specificare uno o più valori di 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).

pvDestContext
Riservato per utilizzi futuri; deve essere zero.

mshlflags
Specifica se i dati da sottoporre a marshalling devono essere trasmessi al processo client, ovvero il caso tipico, o scritti in una tabella globale, in cui possono essere recuperati da più client.

Valore restituito

S_OK Il puntatore all'interfaccia è stato eseguito correttamente il marshalling.

E_NOINTERFACE L'interfaccia specificata non è supportata.

STG_E_MEDIUMFULL Il flusso è pieno.

E_FAIL L'operazione non è riuscita.

FtmBase::marshaller_

Contiene un riferimento al gestore di marshalling thread libero.

Microsoft::WRL::ComPtr<IMarshal> marshaller_; ;

FtmBase::ReleaseMarshalData

Elimina definitivamente un pacchetto di dati sottoposto a marshalling.

STDMETHODIMP ReleaseMarshalData(
   __in IStream *pStm
) override;

Parametri

pStm
Puntatore a un flusso che contiene il pacchetto di dati da eliminare definitivamente.

Valore restituito

S_OK se riesce; in caso contrario, HRESULT indica un errore.

FtmBase::UnmarshalInterface

Inizializza un proxy appena creato e restituisce un puntatore di interfaccia a tale proxy.

STDMETHODIMP UnmarshalInterface(
   __in IStream *pStm,
   __in REFIID riid,
   __deref_out void **ppv
) override;

Parametri

pStm
Puntatore al flusso da cui deve essere scollegato il puntatore dell'interfaccia.

riid
Riferimento all'identificatore dell'interfaccia da annullare.

ppv
Al termine dell'operazione, l'indirizzo di una variabile puntatore che riceve il puntatore dell'interfaccia richiesto in riid. Se l'operazione ha esito positivo, *ppv contiene il puntatore di interfaccia richiesto dell'interfaccia da annullare.

Valore restituito

S_OK se ha esito positivo; in caso contrario, E_NOINTERFACE o E_FAIL.