module (C++)

.idl ファイルのライブラリ ブロックを定義します。

構文

[ module (type=dll, name=string, version=1.0, uuid=uuid, lcid=integer, control=boolean, helpstring=string, helpstringdll=string, helpfile=string, helpcontext=integer, helpstringcontext=integer, hidden=boolean, restricted=boolean, custom=string, resource_name=string,) ];

パラメーター

type
(省略可能) 次のいずれかの値を指定します。

  • dll 結果の DLL がインプロセス COM サーバーとして機能できるようにする関数とクラスを追加します。 これが既定値です。

  • exe 結果の実行可能ファイルがアウトプロセス COM サーバーとして機能することを許可する関数およびクラスを追加します。

  • service 結果の実行可能ファイルが NT サービスとして機能することを許可する関数およびクラスを追加します。

  • unspecified モジュール属性と関連する ATL コードの挿入 (ATL モジュール クラス、グローバル インスタンス _AtlModule およびエントリ ポイント関数の挿入) を無効にします。 プロジェクト内のその他の属性による ATL コードの挿入は無効になりせん。

name
(省略可能) ライブラリ ブロックの名前です。

version
(省略可能) ライブラリ ブロックに割り当てるバージョン番号です。 既定値は 1.0 です。

uuid
ライブラリの一意の ID です。 このパラメーターを省略した場合、ライブラリの ID は自動的に生成されます。 識別子 __uuidof( libraryname )を使用して、ライブラリ ブロックのuuidを取得する必要がある場合があります。

lcid
ローカリゼーション パラメーターです。 詳細については、「 lcid 」を参照してください。

control
(省略可能) ライブラリ内のすべてのコクラスがコントロールであることを指定します。

helpstring
タイプ ライブラリを指定します。

helpstringdll
(省略可能) ドキュメントの文字列検索を実行するために使用する .dll ファイルの名前を設定します。 詳細については、「 helpstringdll 」を参照してください。

helpfile
(省略可能) タイプ ライブラリのヘルプ ファイルの名前です。

helpcontext
(省略可能) このタイプ ライブラリのヘルプ ID です。

helpstringcontext
(省略可能) 詳細については、helpstringcontext を参照してください。

非表示
(省略可能) ライブラリ全体が表示されないようにします。 これは、コントロールと共に使用します。 ホストは、拡張プロパティを使用し、コントロールをラップする新しいタイプ ライブラリを作成する必要があります。 詳細については、「 hidden 」の MIDL 属性に関する説明を参照してください。

restricted
(省略可能) ライブラリのメンバーを、任意に呼び出すことはできません。 詳細については、「 restricted 」の MIDL 属性に関する説明を参照してください。

custom
(省略可能) 1 つ以上の属性です。これは、custom 属性と似ています。 custom の最初のパラメーターはこの属性の GUID です。 次に例を示します。

[module(custom={guid,1}, custom={guid1,2})]

resource_name
DLL、実行可能ファイルまたはサービスの登録に使用される .rgs ファイルの文字列リソース ID です。 モジュールがタイプ サービスである場合、この引数はサービス名を含む文字列の ID の取得にも使用されます。

Note

.rgs ファイルとサービス名を含む文字列の両方に、同じ数値が必要です。

解説

restricted パラメーターを emitidlに指定した場合を除き、C++ 属性を使用するすべてのプログラムで module が必要です。

ライブラリ ブロックは、ソース コードで、 module 属性に加え、 dispinterfacedualobject、または coclassを意味する属性も使用されている場合に作成されます。

.idl ファイルでは、1 つのライブラリ ブロックが許可されています。 ソース コードに複数のモジュールのエントリがある場合、実装されている最新のパラメーター値と結合されます。

この属性が ATL を使用するプロジェクト内で使用されている場合、属性の動作は変わります。 上記の動作に加え、属性により、正しい種類のグローバル オブジェクト (_AtlModule と呼ばれる) と追加のサポート コードも挿入されます。 属性がスタンドアロンの場合、正しいモジュールの種類から派生したクラスが挿入されます。 属性がクラスに適用された場合、正しいモジュールの種類の基本クラスが追加されます。 正しい種類は、type パラメーターの値によって決まります。

  • type = dll

    CAtlDllModuleT は COM サーバーに必要な基本クラスと標準の DLL エントリ ポイントとして使用されます。 これらのエントリ ポイントは、 DllMainDllRegisterServerDllUnRegisterServerDllCanUnloadNow、および DllGetClassObjectです。

  • type = exe

    CAtlExeModuleT は、基本クラスおよび標準の実行可能ファイルのエントリ ポイント WinMainとして使用されます。

  • type = service

    CAtlServiceModuleT は、基本クラスおよび標準の実行可能ファイルのエントリ ポイント WinMainとして使用されます。

  • type = 指定されていません

    モジュール属性と関連する ATL コードの挿入を無効にします。

生成された .idl ファイルにライブラリ ブロックを作成する方法を次のコードで示します。

// cpp_attr_ref_module1.cpp
// compile with: /LD
[module(name="MyLibrary", version="1.2", helpfile="MyHelpFile")];

次のコードは、 moduleを使用した結果、挿入されたコード内に表示される独自の関数を実装できることを示しています。 挿入されたコードを参照する方法の詳細については、「 /Fx 」を参照してください。 module 属性によって挿入された関数の 1 つをオーバーライドするには、実装した関数を含めるクラスを作成し、そのクラスに module 属性を含めます。

// cpp_attr_ref_module2.cpp
// compile with: /LD /link /OPT:NOREF
#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <atltypes.h>
#include <atlctl.h>
#include <atlhost.h>
#include <atlplus.h>

// no semicolon after attribute block
[module(dll, name="MyLibrary", version="1.2", helpfile="MyHelpFile")]
// module attribute now applies to this class
class CMyClass {
public:
BOOL WINAPI DllMain(DWORD dwReason, LPVOID lpReserved) {
   // add your own code here
   return __super::DllMain(dwReason, lpReserved);
   }
};

要件

属性コンテキスト Value
適用対象 任意の場所
反復可能 いいえ
必要な属性 なし
無効な属性 なし

詳細については、「 属性コンテキスト」を参照してください。

関連項目

IDL 属性
クラス属性
スタンドアロン属性
Typedef、Enum、Union、および Struct 型の属性
usesgetlasterror
library
helpcontext
helpstring
helpfile
version