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.