FtmBase — Klasa

Reprezentuje obiekt marshalera bezwątkowy.

Składnia

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

Uwagi

Aby uzyskać więcej informacji, zobacz RuntimeClass Class (Klasa RuntimeClass).

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
FtmBase::FtmBase Inicjuje nowe wystąpienie klasy FtmBase.

Metody publiczne

Nazwa/nazwisko opis
FtmBase::CreateGlobalInterfaceTable Tworzy tabelę interfejsu globalnego (GIT).
FtmBase::D isconnectObject Wymuszone zwalnia wszystkie połączenia zewnętrzne z obiektem. Serwer obiektu wywołuje implementację obiektu tej metody przed zamknięciem.
FtmBase::GetMarshalSizeMax Pobierz górną granicę liczby bajtów potrzebnych do marshalingu określonego wskaźnika interfejsu w określonym obiekcie.
FtmBase::GetUnmarshalClass Pobiera identyfikator CLSID używany przez com do zlokalizowania biblioteki DLL zawierającej kod odpowiedniego serwera proxy. Com ładuje tę bibliotekę DLL, aby utworzyć niezainicjowane wystąpienie serwera proxy.
FtmBase::MarshalInterface Zapisuje w strumieniu dane wymagane do zainicjowania obiektu proxy w procesie klienta.
FtmBase::ReleaseMarshalData Niszczy pakiet danych marshaled.
FtmBase::UnmarshalInterface Inicjuje nowo utworzony serwer proxy i zwraca wskaźnik interfejsu do tego serwera proxy.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
FtmBase::marshaller_ Zawiera odwołanie do wolnego marshalera wątkowego.

Hierarchia dziedziczenia

FtmBase

Wymagania

Nagłówek: ftm.h

Przestrzeń nazw: Microsoft::WRL

FtmBase::CreateGlobalInterfaceTable

Tworzy tabelę interfejsu globalnego (GIT).

static HRESULT CreateGlobalInterfaceTable(
   __out IGlobalInterfaceTable **git
);

Parametry

git
Po zakończeniu tej operacji wskaźnik do tabeli interfejsu globalnego.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie hrESULT wskazujący błąd.

Uwagi

W celu uzyskania więcej informacji, zobacz następujący temat: IGlobalInterfaceTable.

FtmBase::D isconnectObject

Wymuszone zwalnia wszystkie połączenia zewnętrzne z obiektem. Serwer obiektu wywołuje implementację obiektu tej metody przed zamknięciem.

STDMETHODIMP DisconnectObject(
   __in DWORD dwReserved
) override;

Parametry

dwReserved
Zarezerwowane do użytku w przyszłości; musi być zero.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie hrESULT wskazujący błąd.

FtmBase::FtmBase

Inicjuje nowe wystąpienie klasy FtmBase.

FtmBase();

FtmBase::GetMarshalSizeMax

Pobierz górną granicę liczby bajtów potrzebnych do marshalingu określonego wskaźnika interfejsu w określonym obiekcie.

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

Parametry

Riid
Odwołanie do identyfikatora interfejsu do marshalingu.

Pv
Wskaźnik interfejsu do marshalingu; może mieć wartość NULL.

dwDestContext
Kontekst docelowy, w którym określony interfejs ma być unmarshaled.

Określ co najmniej jedną wartość wyliczenia MSHCTX.

Obecnie unmarshaling może wystąpić w innym mieszkaniu bieżącego procesu (MSHCTX_INPROC) lub w innym procesie na tym samym komputerze co bieżący proces (MSHCTX_LOCAL).

pvDestContext
Zarezerwowane do użytku w przyszłości; musi mieć wartość NULL.

mshlflags
Flaga wskazująca, czy dane do marshalingu mają być przesyłane z powrotem do procesu klienta — typowy przypadek — lub zapisywane w tabeli globalnej, gdzie można je pobrać przez wielu klientów. Określ co najmniej jedną wartość wyliczenia MSHLFLAGS.

Rozmiar p
Po zakończeniu tej operacji wskaźnik do górnej granicy ilości danych do zapisania do strumienia marshalingu.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie E_FAIL lub E_NOINTERFACE.

FtmBase::GetUnmarshalClass

Pobiera identyfikator CLSID używany przez com do zlokalizowania biblioteki DLL zawierającej kod odpowiedniego serwera proxy. Com ładuje tę bibliotekę DLL, aby utworzyć niezainicjowane wystąpienie serwera proxy.

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

Parametry

Riid
Odwołanie do identyfikatora interfejsu do marshalingu.

Pv
Wskaźnik do interfejsu do marshalingu; może mieć wartość NULL, jeśli obiekt wywołujący nie ma wskaźnika do żądanego interfejsu.

dwDestContext
Kontekst docelowy, w którym określony interfejs ma być unmarshaled.

Określ co najmniej jedną wartość wyliczenia MSHCTX.

Unmarshaling może wystąpić w innym mieszkaniu bieżącego procesu (MSHCTX_INPROC) lub w innym procesie na tym samym komputerze co bieżący proces (MSHCTX_LOCAL).

pvDestContext
Zarezerwowane do użytku w przyszłości; musi mieć wartość NULL.

mshlflags
Po zakończeniu tej operacji wskaż identyfikator CLSID, który ma zostać użyty do utworzenia serwera proxy w procesie klienta.

Pcid

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie S_FALSE.

FtmBase::MarshalInterface

Zapisuje w strumieniu dane wymagane do zainicjowania obiektu proxy w procesie klienta.

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

Parametry

pStm
Wskaźnik do strumienia, który ma być używany podczas marshalingu.

Riid
Odwołanie do identyfikatora interfejsu do marshalingu. Ten interfejs musi pochodzić z interfejsu IUnknown .

Pv
Wskaźnik do wskaźnika interfejsu do marshalingu; może mieć wartość NULL, jeśli obiekt wywołujący nie ma wskaźnika do żądanego interfejsu.

dwDestContext
Kontekst docelowy, w którym określony interfejs ma być unmarshaled.

Określ co najmniej jedną wartość wyliczenia MSHCTX.

Unmarshaling może wystąpić w innym mieszkaniu bieżącego procesu (MSHCTX_INPROC) lub w innym procesie na tym samym komputerze co bieżący proces (MSHCTX_LOCAL).

pvDestContext
Zarezerwowane do użytku w przyszłości; musi być zero.

mshlflags
Określa, czy dane do marshalingu mają być przesyłane z powrotem do procesu klienta — typowy przypadek — lub zapisywane w tabeli globalnej, gdzie można je pobrać przez wielu klientów.

Wartość zwracana

S_OK Wskaźnik interfejsu został pomyślnie przesłonięty.

E_NOINTERFACE Określony interfejs nie jest obsługiwany.

STG_E_MEDIUMFULL Strumień jest pełny.

E_FAIL Operacja nie powiodła się.

FtmBase::marshaller_

Zawiera odwołanie do wolnego marshalera wątkowego.

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

FtmBase::ReleaseMarshalData

Niszczy pakiet danych marshaled.

STDMETHODIMP ReleaseMarshalData(
   __in IStream *pStm
) override;

Parametry

pStm
Wskaźnik do strumienia zawierającego pakiet danych do zniszczenia.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie hrESULT wskazujący błąd.

FtmBase::UnmarshalInterface

Inicjuje nowo utworzony serwer proxy i zwraca wskaźnik interfejsu do tego serwera proxy.

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

Parametry

pStm
Wskaźnik do strumienia, z którego wskaźnik interfejsu ma być unmarshaled.

Riid
Odwołanie do identyfikatora interfejsu, który ma być unmarshaled.

Ppv
Po zakończeniu tej operacji adres zmiennej wskaźnika odbierający wskaźnik interfejsu żądany w riid. Jeśli ta operacja zakończy się pomyślnie, *ppv zawiera żądany wskaźnik interfejsu, który ma być unmarshaled.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie E_NOINTERFACE lub E_FAIL.