次の方法で共有


Module クラス

関連するオブジェクトから成るコレクションを表します。

構文

template<ModuleType moduleType>
class Module;

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

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

パラメーター

moduleType
1 つ以上の ModuleType 列挙型の値の組み合わせ。

メンバー

保護されたクラス

名前 説明
Module::GenericReleaseNotifier 現在のモジュール内の最後のオブジェクトが解放されると、イベント ハンドラーを呼び出します。 イベント ハンドラーは、ラムダ、ファンクター、または関数へのポインターで指定します。
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 他のアプリケーションが接続できるよう、1 つ以上の COM オブジェクトを登録します。
Module::RegisterObjects 他のアプリケーションが接続できるよう、COM オブジェクトまたは Windows ランタイム オブジェクトを登録します。
Module::RegisterWinRTObject 他のアプリケーションが接続できるよう、1 つ以上の Windows ランタイム オブジェクトを登録します。
Module::Terminate モジュールによってインスタンス化されたすべてのファクトリをシャットダウンします。
Module::UnregisterCOMObject 1 つ以上の COM オブジェクトの登録を解除し、他のアプリケーションがそれに接続できないようにします。
Module::UnregisterObjects 他のアプリケーションが接続できないように、指定されたモジュール内のオブジェクトの登録を解除します。
Module::UnregisterWinRTObject 他のアプリケーションが接続できないよう、1 つ以上の 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
objectmethod パラメーターが組み合わせて使われます。 モジュール内の最後のインスタンス オブジェクトが解放されるとき、最後のインスタンス オブジェクトを指し示します。

method
objectmethod パラメーターが組み合わせて使われます。 モジュール内の最後のインスタンス オブジェクトが解放されるとき、最後のインスタンス オブジェクトのメソッドを指し示します。

戻り値

モジュールへの参照。

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
ActivatableClassWithFactoryActivatableClassWithFactoryEx、または 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

他のアプリケーションが接続できるよう、1 つ以上の 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。それ以外の場合は、操作が失敗した理由を示すCO_E_OBJISREGなどの HRESULT。

解説

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

他のアプリケーションが接続できるよう、1 つ以上の Windows ランタイム オブジェクトを登録します。

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

パラメーター

serverName
この操作によって影響を受けるオブジェクトのサブセットを指定する名前。

activatableClassIds
登録するアクティブ化可能な CLSID の配列。

cookie
登録されたクラス オブジェクトを識別する値。 この値は、後で登録を取り消すために使われます。

count
登録するオブジェクトの数。

戻り値

成功した場合は S_OK。それ以外の場合は、操作が失敗した理由を示す CO_E_OBJISREG などのエラー HRESULT。

Module::releaseNotifier_

ReleaseNotifier オブジェクトへのポインターを保持します。

ReleaseNotifier *releaseNotifier_;

Module::Terminate

モジュールによってインスタンス化されたすべてのファクトリをシャットダウンします。

void Terminate();

解説

キャッシュ内のファクトリを解放します。

Module::UnregisterCOMObject

1 つ以上の 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

他のアプリケーションが接続できないよう、1 つ以上の Windows ランタイム オブジェクトの登録を解除します。

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

パラメーター

cookie
登録を取り消すクラス オブジェクトを識別する値へのポインター。