Module - класс

Представляет коллекцию связанных объектов.

Синтаксис

template<ModuleType moduleType>
class Module;

template<>
class Module<InProc> : public Details::ModuleBase;

template<>
class Module<OutOfProc> : public Module<InProc>;

Параметры

moduleType
Сочетание одного или нескольких значений перечисления ModuleType .

Участники

Защищенные классы

Имя Описание
Module::GenericReleaseNotifier Вызывает обработчик событий при освобождении последнего объекта в текущем модуле. Обработчик событий задается лямбда-выражением, функтором или указателем на функцию.
Module::MethodReleaseNotifier Вызывает обработчик событий при освобождении последнего объекта в текущем модуле. Обработчик событий указывается объектом и его элементом указателя на метод.
Module::ReleaseNotifier Вызывает обработчик событий при освобождении последнего объекта в модуле.

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

Имя Описание
Модуль::~Module Деинициализирует текущий Module экземпляр класса.

Защищенные конструкторы

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

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

Имя Описание
Module::Create Создает экземпляр модуля.
Module::D ecrementObjectCount Уменьшает количество объектов, отслеживаемых модулем.
Module::GetActivationFactory Получает фабрику активации для модуля.
Module::GetClassObject Извлекает кэш фабрик классов.
Модуль::GetModule Создает экземпляр модуля.
Module::GetObjectCount Извлекает количество объектов, управляемых этим модулем.
Module::IncrementObjectCount Увеличивает количество объектов, отслеживаемых модулем.
Module::RegisterCOMObject Регистрирует один или несколько объектов модели COM, чтобы другие приложения могли к ним подключиться.
Module::RegisterObjects Регистрирует объекты COM или среда выполнения Windows, чтобы другие приложения могли подключаться к ним.
Module::RegisterWinRTObject Регистрирует один или несколько объектов среда выполнения Windows, чтобы другие приложения могли подключаться к ним.
Module::Terminate Приводит к завершению работы всех экземпляров фабрик, созданных модулем.
Module::UnregisterCOMObject Отменяет регистрацию одного или нескольких объектов модели COM, что предотвращает подключение к ним других приложений.
Module::UnregisterObjects Отменяет регистрацию объектов в указанном модуле. Таким образом другие приложения не смогут подключиться к ним.
Module::UnregisterWinRTObject Отменяет регистрацию одного или нескольких объектов среда выполнения Windows, чтобы другие приложения не могут подключаться к ним.

Защищенные методы

Имя Описание
Module::Create Создает экземпляр модуля.

Защищенные члены данных

Имя Описание
Модуль::objectCount_ Отслеживает, сколько классов было создано с помощью функции Make .
Модуль::releaseNotifier_ Содержит указатель на ReleaseNotifier объект.

Макросы

Имя Описание
АктивироватьableClass Заполняет внутренний кэш, содержащий фабрику, которая может создать экземпляр указанного класса. Этот макрос задает параметры фабрики и группы по умолчанию.
АктивацияClassWithFactory Заполняет внутренний кэш, содержащий фабрику, которая может создать экземпляр указанного класса. Этот макрос позволяет указать определенный параметр фабрики.
АктивацияClassWithFactoryEx Заполняет внутренний кэш, содержащий фабрику, которая может создать экземпляр указанного класса. Этот макрос позволяет указать определенные параметры фабрики и идентификатора группы.

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

ModuleBase

Module

Module

Requirements

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

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

Модуль::~Module

Деинициализирует текущий Module экземпляр класса.

virtual ~Module();

Module::Create

Создает экземпляр модуля.

WRL_NOTHROW static Module& Create();
template<typename T>
WRL_NOTHROW static Module& Create(
   T callback
);
template<typename T>
WRL_NOTHROW static Module& Create(
   _In_ T* object,
   _In_ void (T::* method)()
);

Параметры

T
Тип модуля.

Обратного вызова
Вызывается при выпуске последнего объекта экземпляра модуля.

object
Параметры объекта и метода используются в сочетании. Указывает на последний объект экземпляра при выпуске последнего объекта экземпляра в модуле.

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

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

Ссылка на модуль.

Module::D ecrementObjectCount

Уменьшает количество объектов, отслеживаемых модулем.

virtual long DecrementObjectCount();

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

Счетчик перед операцией уменьшения.

Module::GetActivationFactory

Получает фабрику активации для модуля.

WRL_NOTHROW HRESULT GetActivationFactory(
   _In_ HSTRING pActivatibleClassId,
   _Deref_out_ IActivationFactory **ppIFactory,
   wchar_t* serverName = nullptr
);

Параметры

pActivatibleClassId
Представляет IID класса среды выполнения.

ppIFactory
Представляет интерфейс IActivationFactory указанного класса среды выполнения.

serverName
Имя подмножества фабрик класса в текущем модуле. Укажите имя сервера, используемое в макросе ActivatableClassWithFactoryEx , или укажите nullptr , чтобы получить имя сервера по умолчанию.

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

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

Module::GetClassObject

Извлекает кэш фабрик классов.

HRESULT GetClassObject(
   REFCLSID clsid,
   REFIID riid,
   _Deref_out_ void **ppv,
   wchar_t* serverName = nullptr
);

Параметры

Clsid
Идентификатор класса.

riid
Запрошенный идентификатор интерфейса.

Ppv
Указатель на возвращаемый объект.

serverName
Имя сервера, указанное в макросе ActivatableClassWithFactory, ActivatableClassWithFactoryEx или ActivatableClass; в противном случае — значение nullptr для получения имени сервера по умолчанию.

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

Замечания

Используйте этот метод только для COM, а не для среда выполнения Windows. Этот метод предоставляет только IClassFactory методы.

Модуль::GetModule

Создает экземпляр модуля.

static Module& GetModule();
WRL_NOTHROW static Module& GetModule();

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

Ссылка на модуль.

Module::GetObjectCount

Извлекает количество объектов, управляемых этим модулем.

virtual long GetObjectCount() const;

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

Текущее количество объектов, управляемых этим модулем.

Module::IncrementObjectCount

Увеличивает количество объектов, отслеживаемых модулем.

virtual long IncrementObjectCount();

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

Число перед операцией добавочного увеличения.

Module::Module

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

Module();

Замечания

Этот конструктор является защищенным и не может быть вызван ключевым словом new. Вместо этого вызовите модуль::GetModule или Module::Create.

Модуль::objectCount_

Отслеживает, сколько классов было создано с помощью функции Make .

volatile long objectCount_;

Module::RegisterCOMObject

Регистрирует один или несколько объектов модели COM, чтобы другие приложения могли к ним подключиться.

WRL_NOTHROW virtual HRESULT RegisterCOMObject(
   const wchar_t* serverName,
   IID* clsids,
   IClassFactory** factories,
   DWORD* cookies,
   unsigned int count);

Параметры

serverName
Полное имя сервера.

clsids
Массив регистрируемых идентификаторов CLSID.

Заводов
Массив интерфейсов IUnknown объектов класса, чья доступность публикуется.

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

count
Количество идентификаторов CLSID, которые необходимо зарегистрировать.

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

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

Замечания

COM-объекты зарегистрированы с помощью перечислителя CLSCTX_LOCAL_SERVER перечисления CLSCTX.

Тип подключения к зарегистрированным объектам определяется сочетанием текущего параметра шаблона comflag и перечислителя REGCLS_SUSPENDED перечисления REGCLS.

Module::RegisterObjects

Регистрирует объекты COM или среда выполнения Windows, чтобы другие приложения могли подключаться к ним.

HRESULT RegisterObjects(
   ModuleBase* module,
   const wchar_t* serverName);

Параметры

module
Массив объектов COM или среда выполнения Windows.

serverName
Имя сервера, который создал объекты.

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

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

Module::RegisterWinRTObject

Регистрирует один или несколько объектов среда выполнения Windows, чтобы другие приложения могли подключаться к ним.

HRESULT RegisterWinRTObject(const wchar_t* serverName,
   wchar_t** activatableClassIds,
   WINRT_REGISTRATION_COOKIE* cookie,
   unsigned int count)

Параметры

serverName
Имя, которое определяет подмножество объектов, затронутых этой операцией.

активироватьableClassIds
Массив активируемых идентификаторов CLSID для регистрации.

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

count
Количество объектов, которое необходимо зарегистрировать.

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

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

Модуль::releaseNotifier_

Содержит указатель на ReleaseNotifier объект.

ReleaseNotifier *releaseNotifier_;

Module::Terminate

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

void Terminate();

Замечания

Освобождает фабрики в кэше.

Module::UnregisterCOMObject

Отменяет регистрацию одного или нескольких объектов модели COM, что предотвращает подключение к ним других приложений.

virtual HRESULT UnregisterCOMObject(
   const wchar_t* serverName,
   DWORD* cookies,
   unsigned int count

Параметры

serverName
(Не используется)

Файлы cookie
Массив указателей на значения, которые идентифицируют объекты класса для отмены регистрации. Массив был создан методом RegisterCOMObject .

count
Количество классов для отмены регистрации.

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

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

Module::UnregisterObjects

Отменяет регистрацию объектов в указанном модуле. Таким образом другие приложения не смогут подключиться к ним.

HRESULT UnregisterObjects(
   ModuleBase* module,
   const wchar_t* serverName);

Параметры

module
Указатель на модуль.

serverName
Представляет имя, которое определяет подмножество объектов, затронутых этой операцией.

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

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

Module::UnregisterWinRTObject

Отменяет регистрацию одного или нескольких объектов среда выполнения Windows, чтобы другие приложения не могут подключаться к ним.

virtual HRESULT UnregisterWinRTObject(
   unsigned int,
   _Inout_ WINRT_REGISTRATION_COOKIE* cookie
);

Параметры

Cookie
Указатель на значение, определяющее объект класса, регистрация которого должна быть отменена.