Share via


FtmBase-Klasse

Stellt ein Freethread-Marshaller-Objekt dar.

Syntax

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

Hinweise

Weitere Informationen finden Sie unter RuntimeClass Class.

Member

Öffentliche Konstruktoren

Name Beschreibung
FtmBase::FtmBase Initialisiert eine neue Instanz der FtmBase-Klasse.

Öffentliche Methoden

Name Beschreibung
FtmBase::CreateGlobalInterfaceTable Erstellt eine globale Schnittstellentabelle (GIT).
FtmBase::D isconnectObject Alle externen Verbindungen zu einem Objekt werden freigegeben. Der Server des Objekts ruft die Implementierung dieser Methode auf, bevor sie heruntergefahren wird.
FtmBase::GetMarshalSizeMax Rufen Sie die obere Grenze für die Anzahl der Bytes ab, die zum Marshallen des angegebenen Schnittstellenzeigers für das angegebene Objekt erforderlich sind.
FtmBase::GetUnmarshalClass Ruft die CLSID ab, die COM zum Suchen der DLL verwendet, die den Code für den entsprechenden Proxy enthält. COM lädt diese DLL, um eine nicht initialisierte Instanz des Proxys zu erstellen.
FtmBase::MarshalInterface Schreibt in einen Datenstrom, der zum Initialisieren eines Proxyobjekts in einem Clientprozess erforderlich ist.
FtmBase::ReleaseMarshalData Zerstört ein gemarstetes Datenpaket.
FtmBase::UnmarshalInterface Initialisiert einen neu erstellten Proxy und gibt einen Schnittstellenzeiger auf diesen Proxy zurück.

Öffentliche Datenmember

Name Beschreibung
FtmBase::marshaller_ Enthält einen Verweis auf den freien Thread-Marshaler.

Vererbungshierarchie

FtmBase

Anforderungen

Kopfzeile: ftm.h

Namespace: Microsoft::WRL

FtmBase::CreateGlobalInterfaceTable

Erstellt eine globale Schnittstellentabelle (GIT).

static HRESULT CreateGlobalInterfaceTable(
   __out IGlobalInterfaceTable **git
);

Parameter

git
Wenn dieser Vorgang abgeschlossen ist, zeigt ein Zeiger auf eine globale Schnittstellentabelle.

Rückgabewert

S_OK, wenn erfolgreich; andernfalls ein HRESULT, das den Fehler angibt.

Hinweise

Weitere Informationen finden Sie unter IGlobalInterfaceTable.

FtmBase::D isconnectObject

Alle externen Verbindungen zu einem Objekt werden freigegeben. Der Server des Objekts ruft die Implementierung dieser Methode auf, bevor sie heruntergefahren wird.

STDMETHODIMP DisconnectObject(
   __in DWORD dwReserved
) override;

Parameter

dwReserved
Für die zukünftige Verwendung reserviert. Muss 0 (null) sein.

Rückgabewert

S_OK, wenn erfolgreich; andernfalls ein HRESULT, das den Fehler angibt.

FtmBase::FtmBase

Initialisiert eine neue Instanz der FtmBase-Klasse.

FtmBase();

FtmBase::GetMarshalSizeMax

Rufen Sie die obere Grenze für die Anzahl der Bytes ab, die zum Marshallen des angegebenen Schnittstellenzeigers für das angegebene Objekt erforderlich sind.

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

Parameter

riid
Verweis auf den Bezeichner der Schnittstelle, die gemarstet werden soll.

Pv
Schnittstellenzeiger, der gemarstet werden soll; kann NULL sein.

dwDestContext
Zielkontext, in dem die angegebene Schnittstelle nichtmarsiert werden soll.

Geben Sie einen oder mehrere MSHCTX-Enumerationswerte an.

Derzeit kann die Entmarung entweder in einer anderen Wohnung des aktuellen Prozesses (MSHCTX_INPROC) oder in einem anderen Prozess auf demselben Computer wie der aktuelle Prozess (MSHCTX_LOCAL) auftreten.

pvDestContext
Reserviert für die zukünftige Nutzung; muss NULL sein.

mshlflags
Flag, das angibt, ob die zu marshallenden Daten an den Clientprozess ( der typische Fall ) übertragen werden sollen oder in eine globale Tabelle geschrieben werden, wo sie von mehreren Clients abgerufen werden kann. Geben Sie mindestens einen MSHLFLAGS-Enumerationswert an.

pSize
Wenn dieser Vorgang abgeschlossen ist, zeigen Sie auf die obere Grenze der Datenmenge, die in den Marshallingdatenstrom geschrieben werden soll.

Rückgabewert

bei erfolgreicher Ausführung S_OK; andernfalls E_FAIL oder E_NOINTERFACE.

FtmBase::GetUnmarshalClass

Ruft die CLSID ab, die COM zum Suchen der DLL verwendet, die den Code für den entsprechenden Proxy enthält. COM lädt diese DLL, um eine nicht initialisierte Instanz des Proxys zu erstellen.

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

Parameter

riid
Verweis auf den Bezeichner der Schnittstelle, die gemarstet werden soll.

Pv
Zeiger auf die Schnittstelle, die gemarstet werden soll; kann NULL sein, wenn der Aufrufer keinen Zeiger auf die gewünschte Schnittstelle hat.

dwDestContext
Zielkontext, in dem die angegebene Schnittstelle nichtmarsiert werden soll.

Geben Sie einen oder mehrere MSHCTX-Enumerationswerte an.

Entmarshaling kann entweder in einer anderen Wohnung des aktuellen Prozesses (MSHCTX_INPROC) oder in einem anderen Prozess auf demselben Computer wie der aktuelle Prozess (MSHCTX_LOCAL) auftreten.

pvDestContext
Reserviert für die zukünftige Nutzung; muss NULL sein.

mshlflags
Wenn dieser Vorgang abgeschlossen ist, zeigen Sie auf die CLSID, die zum Erstellen eines Proxys im Clientprozess verwendet werden soll.

pCid

Rückgabewert

bei erfolgreicher Ausführung S_OK; andernfalls S_FALSE.

FtmBase::MarshalInterface

Schreibt in einen Datenstrom, der zum Initialisieren eines Proxyobjekts in einem Clientprozess erforderlich ist.

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

Parameter

pStm
Zeiger auf den Datenstrom, der während des Marshallings verwendet werden soll.

riid
Verweis auf den Bezeichner der Schnittstelle, die gemarstet werden soll. Diese Schnittstelle muss von der IUnknown -Schnittstelle abgeleitet werden.

Pv
Zeiger auf den Schnittstellenzeiger, der gemarstet werden soll; kann NULL sein, wenn der Aufrufer keinen Zeiger auf die gewünschte Schnittstelle hat.

dwDestContext
Zielkontext, in dem die angegebene Schnittstelle nichtmarsiert werden soll.

Geben Sie einen oder mehrere MSHCTX-Enumerationswerte an.

Entmarshaling kann in einer anderen Wohnung des aktuellen Prozesses (MSHCTX_INPROC) oder in einem anderen Prozess auf demselben Computer wie der aktuelle Prozess (MSHCTX_LOCAL) auftreten.

pvDestContext
Für die zukünftige Verwendung reserviert. Muss 0 (null) sein.

mshlflags
Gibt an, ob die daten, die gemarstet werden sollen, an den Clientprozess ( der typische Fall ) übertragen oder in eine globale Tabelle geschrieben werden, in der sie von mehreren Clients abgerufen werden kann.

Rückgabewert

S_OK Der Schnittstellenzeiger wurde erfolgreich gemarstet.

E_NOINTERFACE Die angegebene Schnittstelle wird nicht unterstützt.

STG_E_MEDIUMFULL Der Datenstrom ist voll.

E_FAIL Der Vorgang ist fehlgeschlagen.

FtmBase::marshaller_

Enthält einen Verweis auf den freien Thread-Marshaler.

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

FtmBase::ReleaseMarshalData

Zerstört ein gemarstetes Datenpaket.

STDMETHODIMP ReleaseMarshalData(
   __in IStream *pStm
) override;

Parameter

pStm
Zeigen Sie auf einen Datenstrom, der das zu zerstörende Datenpaket enthält.

Rückgabewert

S_OK, wenn erfolgreich; andernfalls ein HRESULT, das den Fehler angibt.

FtmBase::UnmarshalInterface

Initialisiert einen neu erstellten Proxy und gibt einen Schnittstellenzeiger auf diesen Proxy zurück.

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

Parameter

pStm
Zeiger auf den Datenstrom, von dem der Schnittstellenzeiger getrennt werden soll.

riid
Verweis auf den Bezeichner der Schnittstelle, die nichtmarshaliert werden soll.

Ppv
Wenn dieser Vorgang abgeschlossen ist, wird die Adresse einer Zeigervariable, die den in riid angeforderten Schnittstellenzeiger empfängt. Wenn dieser Vorgang erfolgreich ist, enthält *ppv den angeforderten Schnittstellenzeiger der Schnittstelle, die entmarstet werden soll.

Rückgabewert

bei erfolgreicher Ausführung S_OK; andernfalls E_NOINTERFACE oder E_FAIL.