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.