Поделиться через


FtmBase - класс

Представляет свободнопоточный объект маршаллера.

Синтаксис

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

Замечания

Дополнительные сведения см. в разделе "Класс RuntimeClass".

Участники

Открытые конструкторы

Имя Описание
FtmBase::FtmBase Инициализирует новый экземпляр класса FtmBase.

Открытые методы

Имя Описание
FtmBase::CreateGlobalInterfaceTable Создает глобальную таблицу интерфейсов (GIT).
FtmBase::D isconnectObject Принудительно освобождает все внешние подключения к объекту. Сервер объекта вызывает реализацию этого метода перед завершением работы.
FtmBase::GetMarshalSizeMax Получите верхнюю границу по количеству байтов, необходимых для маршалирования указанного указателя интерфейса на указанном объекте.
FtmBase::GetUnmarshalClass Возвращает CLSID, который COM использует для поиска библиотеки DLL, содержащей код для соответствующего прокси-сервера. COM загружает эту библиотеку DLL для создания неинициализированного экземпляра прокси-сервера.
FtmBase::MarshalInterface Записывает в поток данные, необходимые для инициализации прокси-объекта в некоторых клиентских процессах.
FtmBase::ReleaseMarshalData Уничтожает маршалированные пакеты данных.
FtmBase::UnmarshalInterface Инициализирует только что созданный прокси-сервер и возвращает указатель интерфейса на этот прокси-сервер.

Открытые члены данных

Имя Описание
FtmBase::marshaller_ Содержит ссылку на бесплатный маршалер с потоком.

Иерархия наследования

FtmBase

Требования

Заголовок: ftm.h

Пространство имен: Microsoft::WRL

FtmBase::CreateGlobalInterfaceTable

Создает глобальную таблицу интерфейсов (GIT).

static HRESULT CreateGlobalInterfaceTable(
   __out IGlobalInterfaceTable **git
);

Параметры

git
По завершении этой операции указатель на глобальную таблицу интерфейса.

Возвращаемое значение

Значение S_OK, если операция завершилась успешно; в противном случае — значение HRESULT, указывающее на ошибку.

Замечания

Дополнительные сведения см. в разделе IGlobalInterfaceTable.

FtmBase::D isconnectObject

Принудительно освобождает все внешние подключения к объекту. Сервер объекта вызывает реализацию этого метода перед завершением работы.

STDMETHODIMP DisconnectObject(
   __in DWORD dwReserved
) override;

Параметры

dwReserved
Зарезервировано для будущего использования; должно иметь значение нуль.

Возвращаемое значение

Значение S_OK, если операция завершилась успешно; в противном случае — значение HRESULT, указывающее на ошибку.

FtmBase::FtmBase

Инициализирует новый экземпляр класса FtmBase.

FtmBase();

FtmBase::GetMarshalSizeMax

Получите верхнюю границу по количеству байтов, необходимых для маршалирования указанного указателя интерфейса на указанном объекте.

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

Параметры

riid
Ссылка на идентификатор интерфейса для маршалирования.

pv
Указатель интерфейса для маршалирования; может иметь значение NULL.

dwDestContext
Контекст назначения, в котором указанный интерфейс должен быть немаршализован.

Укажите одно или несколько значений перечисления MSHCTX.

В настоящее время отмена работы может происходить либо в другой квартире текущего процесса (MSHCTX_INPROC), либо в другом процессе на том же компьютере, что и текущий процесс (MSHCTX_LOCAL).

pvDestContext
Зарезервировано для дальнейшего использования; должно иметь значение NULL.

mshlflags
Флаг, указывающий, следует ли передавать данные обратно в клиентский процесс ( типичный случай) или записать в глобальную таблицу, где ее можно получить несколькими клиентами. Укажите одно или несколько значений перечисления MSHLFLAGS.

pSize
По завершении этой операции указатель на верхнюю границу объема данных, записываемого в маршалинг потока.

Возвращаемое значение

S_OK в случае успешного выполнения; в противном случае E_FAIL или E_NOINTERFACE.

FtmBase::GetUnmarshalClass

Возвращает CLSID, который COM использует для поиска библиотеки DLL, содержащей код для соответствующего прокси-сервера. COM загружает эту библиотеку DLL для создания неинициализированного экземпляра прокси-сервера.

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

Параметры

riid
Ссылка на идентификатор интерфейса для маршалирования.

pv
Указатель на интерфейс для маршалирования; может иметь значение NULL, если вызывающий объект не имеет указателя на нужный интерфейс.

dwDestContext
Контекст назначения, в котором указанный интерфейс должен быть немаршализован.

Укажите одно или несколько значений перечисления MSHCTX.

Отмена работы может происходить либо в другой квартире текущего процесса (MSHCTX_INPROC), либо в другом процессе на том же компьютере, что и текущий процесс (MSHCTX_LOCAL).

pvDestContext
Зарезервировано для дальнейшего использования; должно иметь значение NULL.

mshlflags
По завершении этой операции указатель на CLSID, который будет использоваться для создания прокси-сервера в процессе клиента.

pCid

Возвращаемое значение

S_OK в случае успешного выполнения; в противном случае S_FALSE.

FtmBase::MarshalInterface

Записывает в поток данные, необходимые для инициализации прокси-объекта в некоторых клиентских процессах.

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

Параметры

pStm
Указатель на поток, используемый во время маршалинга.

riid
Ссылка на идентификатор интерфейса для маршалирования. Он должен быть производным от интерфейса IUnknown .

pv
Указатель на указатель интерфейса для маршалирования; может иметь значение NULL, если вызывающий объект не имеет указателя на нужный интерфейс.

dwDestContext
Контекст назначения, в котором указанный интерфейс должен быть немаршализован.

Укажите одно или несколько значений перечисления MSHCTX.

Размыкание может происходить в другой квартире текущего процесса (MSHCTX_INPROC) или в другом процессе на том же компьютере, что и текущий процесс (MSHCTX_LOCAL).

pvDestContext
Зарезервировано для будущего использования; должно иметь значение нуль.

mshlflags
Указывает, следует ли передавать данные обратно в клиентский процесс ( типичный случай) или записываться в глобальную таблицу, где ее можно получить несколькими клиентами.

Возвращаемое значение

S_OK Успешно выполнен маршал указатель интерфейса.

E_NOINTERFACE Указанный интерфейс не поддерживается.

STG_E_MEDIUMFULL поток заполнен.

E_FAIL сбой операции.

FtmBase::marshaller_

Содержит ссылку на бесплатный маршалер с потоком.

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

FtmBase::ReleaseMarshalData

Уничтожает маршалированные пакеты данных.

STDMETHODIMP ReleaseMarshalData(
   __in IStream *pStm
) override;

Параметры

pStm
Указатель на поток, содержащий пакет данных для уничтожения.

Возвращаемое значение

Значение S_OK, если операция завершилась успешно; в противном случае — значение HRESULT, указывающее на ошибку.

FtmBase::UnmarshalInterface

Инициализирует только что созданный прокси-сервер и возвращает указатель интерфейса на этот прокси-сервер.

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

Параметры

pStm
Указатель на поток, из которого указатель интерфейса должен быть незамечен.

riid
Ссылка на идентификатор интерфейса, который требуется отменить.

ppv
После завершения этой операции адрес переменной указателя, получающей указатель интерфейса, запрошенный в riid. Если эта операция выполнена успешно, *ppv содержит запрошенный указатель интерфейса для немарсхалированного интерфейса.

Возвращаемое значение

S_OK в случае успешного выполнения; в противном случае E_NOINTERFACE или E_FAIL.