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 或指針對函式上指定。
Module::MethodReleaseNotifier 釋放目前模組中的最後一個物件時,叫用事件處理程式。 事件處理程式是由物件及其指向 a 方法成員的指標所指定。
Module::ReleaseNotifier 釋放模組中的最後一個物件時,叫用事件處理程式。

公用建構函式

名稱 描述
模組::~模組 將類別的 Module 目前實例取消初始化。

受保護的建構函式

名稱 描述
Module::Module 初始化 Module 類別的新執行個體。

公用方法

名稱 描述
Module::Create 建立模組的實例。
Module::D ecrementObjectCount 遞減模組所追蹤的物件數目。
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 填入內部快取,其中包含可建立指定類別實例的處理站。 此宏會指定預設 Factory 和群組識別子參數。
ActivatableClassWithFactory 填入內部快取,其中包含可建立指定類別實例的處理站。 這個宏可讓您指定特定的 Factory 參數。
ActivatableClassWithFactoryEx 填入內部快取,其中包含可建立指定類別實例的處理站。 這個宏可讓您指定特定的處理站和群組標識子參數。

繼承階層架構

ModuleBase

Module

Module

需求

標頭: module.h

命名空間: Microsoft::WRL

模組::~模組

將類別的 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
目前模組中類別處理站子集的名稱。 指定 ActivateableClassWithFactoryEx 宏中使用的伺服器名稱,或指定 nullptr 以取得預設伺服器名稱。

傳回值

如果成功,S_OK;否則,GetActivationFactory 所傳回的 HRESULT。

Module::GetClassObject

擷取類別處理站的快取。

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

參數

Clsid
類別標識碼。

riid
您要求的介面識別碼。

Ppv
傳回物件的指標。

serverName
在 、 ActivatableClassWithFactoryExActivatableClass 宏中指定的ActivatableClassWithFactory伺服器名稱,或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::GetModuleModule::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 陣列。

工廠
發行可用性之類別物件的 IUnknown 介面陣列。

餅乾
作業完成時,識別已註冊之類別物件的值指標陣列。 這些值稍後會使用來撤銷註冊。

計數
要註冊的 CLSID 數目。

傳回值

如果成功,S_OK;否則,HRESULT,例如CO_E_OBJISREG,表示作業失敗的原因。

備註

COM 物件會向 CLSCTX 列舉的CLSCTX_LOCAL_SERVER列舉值註冊。

與已註冊對象的連接類型是由目前 舒適旗 標範本參數和 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 陣列。

餅乾
值,識別已註冊的類別物件。 此值稍後會用來撤銷註冊。

計數
要註冊的物件數目。

傳回值

如果成功,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
( 未使用 )

餅乾
要取消註冊之類別物件的值指標陣列。 陣列是由 RegisterCOMObject 方法所建立。

計數
要取消註冊的類別數目。

傳回值

如果這項作業成功,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
);

參數

餅乾
值的指標,識別要撤銷其註冊的類別物件。