Module 类
表示相关对象的集合。
语法
template<ModuleType moduleType>
class Module;
template<>
class Module<InProc> : public Details::ModuleBase;
template<>
class Module<OutOfProc> : public Module<InProc>;
参数
moduleType
一个或多个 ModuleType 枚举值的组合。
成员
受保护的类
名称 | 描述 |
---|---|
Module::GenericReleaseNotifier | 在释放当前模块中的最后一个对象时调用事件处理程序。 事件处理程序由 lambda、functor 或 pointer-to-function 指定。 |
Module::MethodReleaseNotifier | 在释放当前模块中的最后一个对象时调用事件处理程序。 事件处理程序由对象及其指向方法成员的指针指定。 |
Module::ReleaseNotifier | 在释放模块中的最后一个对象时调用事件处理程序。 |
公共构造函数
名称 | 描述 |
---|---|
Module::~Module | 取消初始化 Module 类的当前实例。 |
受保护构造函数
名称 | 描述 |
---|---|
Module::Module | 初始化 Module 类的新实例。 |
公共方法
名称 | 描述 |
---|---|
Module::Create | 创建模块的实例。 |
Module::DecrementObjectCount | 递减模块所跟踪对象的数量。 |
Module::GetActivationFactory | 获取模块的激活工厂。 |
Module::GetClassObject | 检索类工厂的缓存。 |
Module::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 | 创建模块的实例。 |
受保护的数据成员
名称 | 描述 |
---|---|
Module::objectCount_ | 记录使用 Make 函数创建的类数量。 |
Module::releaseNotifier_ | 保存一个指向 ReleaseNotifier 对象的指针。 |
宏
名称 | 描述 |
---|---|
ActivatableClass | 填充包含可以创建指定类实例的工厂的内部缓存。 此宏指定默认工厂和组 ID 参数。 |
ActivatableClassWithFactory | 填充包含可以创建指定类实例的工厂的内部缓存。 使用此宏可以指定特定的工厂参数。 |
ActivatableClassWithFactoryEx | 填充包含可以创建指定类实例的工厂的内部缓存。 使用此宏可以指定特定的工厂和组 ID 参数。 |
继承层次结构
ModuleBase
Module
Module
要求
标头:module.h
命名空间: Microsoft::WRL
Module::~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
模块类型。
callback
释放模块的最后一个实例对象时调用。
object
对象和方法参数组合使用。 释放模块中的最后一个实例对象时,指向最后一个实例对象。
method
对象和方法参数组合使用。 释放模块中的最后一个实例对象时,指向最后一个实例对象的方法。
返回值
对模块的引用。
Module::DecrementObjectCount
递减模块所跟踪对象的数量。
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;否则为 GetActivationFactory 返回的 HRESULT。
Module::GetClassObject
检索类工厂的缓存。
HRESULT GetClassObject(
REFCLSID clsid,
REFIID riid,
_Deref_out_ void **ppv,
wchar_t* serverName = nullptr
);
参数
clsid
类 ID。
riid
您请求的接口 ID。
ppv
指向返回对象的指针。
serverName
在 ActivatableClassWithFactory
、ActivatableClassWithFactoryEx
或 ActivatableClass
宏中指定的服务器名称;或用于获取默认服务器名称的 nullptr
。
返回值
备注
仅对 COM 而不是 Windows 运行时使用此方法。 此方法仅公开 IClassFactory
方法。
Module::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
关键字进行调用。 请改为调用 Module::GetModule 或 Module::Create。
Module::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 的数组。
factories
其可用性正发布的类对象的 IUnknown 接口的数组。
cookies
完成此操作后,指向标识已注册类对象的值的指针数组。 以后将使用这些值来撤销注册。
count
要注册的 CLSID 的数量。
返回值
如果成功,则为 S_OK;否则为指示操作失败原因的 HRESULT(如 CO_E_OBJISREG)。
备注
COM 对象是使用 CLSCTX 枚举的 CLSCTX_LOCAL_SERVER 枚举器注册的。
注册对象的连接类型由当前 comflag 模板参数和 REGCLS 枚举的 REGCLS_SUSPENDED 枚举器结合指定。
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
指定受此操作影响的对象子集的名称。
activatableClassIds
要注册的可激活 CLSID 的数组。
cookie
标识已注册类对象的值。 此值以后将用于撤销注册。
count
要注册的对象的数量。
返回值
如果成功,则为 S_OK;否则为指示操作失败原因的 HRESULT(如 CO_E_OBJISREG)。
Module::releaseNotifier_
保存一个指向 ReleaseNotifier
对象的指针。
ReleaseNotifier *releaseNotifier_;
Module::Terminate
导致关闭模块实例化的所有工厂。
void Terminate();
注解
释放缓存中的工厂。
Module::UnregisterCOMObject
注销一个或多个 COM 对象,以阻止其他应用程序连接到它们。
virtual HRESULT UnregisterCOMObject(
const wchar_t* serverName,
DWORD* cookies,
unsigned int count
参数
serverName
(未使用)
cookies
指针的数组,其指向标识要注销的类对象的值。 此数组是通过 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
指针,其指向标识将撤销其注册的类对象的值。