模組 (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,
) ];
參數
型別 (可省略)
可以是下列其中一項:dll 加入函式和類別,可讓產生的 DLL,成為同處理序 COM 伺服器。 此為預設值。
exe 加入函式和類別,可讓所產生的可執行檔,以跨處理序 COM 伺服程式的功能。
服務加入函式和類別,可讓所產生的可執行的函式當成 NT 服務。
未指定資料隱碼的模組屬性關聯的 ATL 程式碼會停用: ATL 模組類別、 全域執行個體 _AtlModule 和項目插入點的函式。 不會停用資料隱碼攻擊的 ATL 程式碼,因為在專案中的其他屬性。
名稱 (可省略)
媒體櫃區塊的名稱。版本 (可省略)
您想要指派給文件庫區塊版本號碼。 預設值為 1.0。uuid
文件庫的唯一識別碼。 如果您省略這個參數,識別碼便會自動產生文件庫。 您可能需要擷取 uuid 程式庫區塊內,但您可以藉由識別項的 __uuidof (程式庫名稱)。lcid
當地語系化的參數。 請參閱 lcid 如需詳細資訊。控制 (可省略)
指定媒體櫃中的所有 coclasses 都是控制項。helpstring
指定型別程式庫。helpstringdll (可省略)
設定要用來執行文件字串查閱.dll 檔案的名稱。 請參閱 helpstringdll 如需詳細資訊。說明檔案 (可省略)
型別程式庫的 [說明] 檔案名稱。helpcontext (可省略)
這個型別程式庫說明 ID。helpstringcontext (可省略)
請參閱 helpstringcontext 如需詳細資訊。隱藏 (可省略)
避免顯示整個媒體櫃。 這種用法被為了與控制項一起使用。 主機必須建立新的型別程式庫包裝具有擴充屬性的控制項。 請參閱隱藏 MIDL 屬性,如需詳細資訊。限制 (可省略)
文件庫的成員不能被隨意呼叫。 請參閱限制 MIDL 屬性,如需詳細資訊。自訂 (可省略)
一或多個屬性。 這是類似於自訂屬性。 第一個參數custom是屬性的 GUID。 例如:[module(custom={guid,1}, custom={guid1,2})]
resource_name
用來登錄 DLL 時,可執行檔,或服務的應用程式識別碼的.rgs 檔的字串資源識別碼。 當模組的型別服務時,此引數也可用於取得 ID 的字串,包含服務名稱。
注意事項 |
---|
.Rgs 檔案,並且包含服務名稱的字串應該包含相同的數字值。 |
備註
除非您指定限制 參數,以 emitidl, 模組程式如果使用 C++ 屬性中必要的。
如果,則會建立文件庫區塊除了模組 屬性,程式碼也會使用 分配介面, 雙, 物件,或屬性所暗示, coclass。
一個程式庫區塊被允許的.idl 檔。 在原始程式碼中的多個模組項目就會合併,以實作最新的參數值。
如果使用 ATL 專案中使用這個屬性,屬性的行為就會變更。 除了上述的行為,屬性也將全域物件 (稱為 _AtlModule) 的正確的型別和其他支援的程式碼。 如果屬性為獨立,它就會插入正確的模組型別從衍生的類別。 如果將屬性套用至類別,它會加入正確的模組型別的基底類別。 正確的型別由值type參數:
type= dll
CAtlDllModuleT 做為基底類別和標準 DLL 項目所需的 COM 伺服器的點。 這些進入點是 DllMain, DllRegisterServer, DllUnRegisterServer, DllCanUnloadNow,以及 DllGetClassObject。
type= exe
CAtlExeModuleT 做為基底類別和標準可執行檔的進入點 WinMain。
type= 服務
CAtlServiceModuleT 做為基底類別和標準可執行檔的進入點 WinMain。
type= 未指定
停用 ATL 程式碼模組屬性關聯的資料隱碼的攻擊。
範例
下列程式碼會示範如何建立在產生的.idl 檔中的文件庫區塊。
// cpp_attr_ref_module1.cpp
// compile with: /LD
[module(name="MyLibrary", version="1.2", helpfile="MyHelpFile")];
下列程式碼會顯示您可以提供您自己的實作將會出現在所使用的結果插入的程式碼的函式的模組。 請參閱 /fx 將加入如需檢視插入程式碼。 若要覆寫其中一個函式所插入的模組 屬性,使類別來包含您的函式的實作,並讓 模組屬性套用至該類別。
// 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);
}
};
需求
屬性內容
適用於 |
全螢幕輸入 |
可重複 |
否 |
必要的屬性 |
None |
無效的屬性 |
None |
如需詳細資訊,請參閱屬性內容。