module (C++)
Définit le bloc de bibliothèque dans le fichier .idl.
Syntaxe
[ 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,) ];
Paramètres
type
(Facultatif) Il peut s’agir de l’un des éléments suivants :
dll
Ajoute des fonctions et des classes qui permettent à la DLL résultante de fonctionner en tant que serveur COM in-process. Il s’agit de la valeur par défaut.exe
Ajoute des fonctions et des classes qui permettent à l’exécutable résultant de fonctionner en tant que serveur COM hors processus.service
Ajoute des fonctions et des classes qui permettent à l’exécutable résultant de fonctionner en tant que service NT.unspecified
Désactive l’injection de code ATL liée à l’attribut de module : injection de classe module ATL, instance globale _AtlModule et fonctions de point d’entrée. Ne désactive pas l’injection de code ATL due à d’autres attributs dans le projet.
nom
(Facultatif) Nom du bloc de bibliothèque.
version
(Facultatif) Numéro de version que vous souhaitez affecter au bloc de bibliothèque. La valeur par défaut est 1,0.
uuid
ID unique de la bibliothèque. Si vous omettez ce paramètre, un ID est généré automatiquement pour la bibliothèque. Vous devrez peut-être récupérer l’uuid de votre bloc de bibliothèque, que vous pouvez faire à l’aide de l’identificateur __uuidof( nom de bibliothèque ).
lcid
Paramètre de localisation. Pour plus d’informations, consultez lcid .
control
(Facultatif) Spécifie que toutes les coclasses de la bibliothèque sont des contrôles.
helpstring
Spécifie la bibliothèque de types.
helpstringdll
(Facultatif) Définit le nom du fichier .dll à utiliser pour effectuer une recherche de chaîne de document. Pour plus d’informations, consultez helpstringdll .
helpfile
(Facultatif) Nom du fichier d’aide de la bibliothèque de types.
helpcontext
(Facultatif) ID d’aide de cette bibliothèque de types.
helpstringcontext
(Facultatif) Pour plus d’informations, consultez helpstringcontext .
hidden
(Facultatif) Empêche l’affichage de l’intégralité de la bibliothèque. Cette utilisation est destinée aux contrôles. Les hôtes doivent créer une bibliothèque de types qui encapsule le contrôle avec des propriétés étendues. Pour plus d’informations, consultez l’attribut MIDL hidden .
restricted
(Facultatif) Les membres de la bibliothèque ne peuvent pas être appelés arbitrairement. Pour plus d’informations, consultez l’attribut MIDL restricted .
custom
(Facultatif) Un ou plusieurs attributs ; ceci est similaire à l’attribut personnalisé . Le premier paramètre à personnaliser est le GUID de l’attribut. Par exemple :
[module(custom={guid,1}, custom={guid1,2})]
resource_name
ID de ressource de chaîne du fichier .rgs utilisé pour enregistrer l’ID d’application de la DLL, de l’exécutable ou du service. Quand le module est de type service, cet argument sert également à obtenir l’ID de la chaîne contenant le nom du service.
Remarque
Le fichier .rgs et la chaîne contenant le nom du service doivent tous deux contenir la même valeur numérique.
Notes
module est obligatoire dans tout programme qui utilise des attributs C++, sauf si vous spécifiez le paramètre restrictedpour emitidl .
Un bloc de bibliothèque est créé si, en plus de l’attribut module , le code source utilise également dispinterface, double, objectou un attribut qui implique coclass.
Un seul bloc de bibliothèque est autorisé dans un fichier .idl. Les entrées de module multiples dans le code source sont fusionnées, les valeurs de paramètres les plus récentes étant implémentées.
Si vous utilisez cet attribut dans un projet qui utilise ATL, le comportement de l’attribut change. Outre le comportement ci-dessus, l’attribut insère également un objet global (appelé _AtlModule
) du type correct et du code de prise en charge supplémentaire. Si l’attribut est autonome, il insère une classe dérivée du type de module approprié. Si l’attribut est appliqué à une classe, il ajoute une classe de base du type de module approprié. Le type correct est déterminé par la valeur du paramètre de type :
type
= dllCAtlDllModuleT est utilisé comme classe de base et comme points d’entrée de DLL standard requis pour un serveur COM. Ces points d’entrée sont DllMain, DllRegisterServer, DllUnRegisterServer, DllCanUnloadNowet DllGetClassObject.
type
= exeCAtlExeModuleT est utilisé comme classe de base et comme point d’entrée d’exécutable standard WinMain.
type
= serviceCAtlServiceModuleT est utilisé comme classe de base et comme point d’entrée d’exécutable standard WinMain.
type
= unspecifiedDésactive l’injection de code ATL associé à l’attribut de module.
Exemple
Le code suivant montre comment créer un bloc de bibliothèque dans le fichier .idl généré.
// cpp_attr_ref_module1.cpp
// compile with: /LD
[module(name="MyLibrary", version="1.2", helpfile="MyHelpFile")];
Le code suivant montre que vous pouvez fournir votre propre implémentation d’une fonction qui s’affiche dans le code injecté suite à l’utilisation de module. Pour plus d’informations sur l’affichage de code injecté, consultez /Fx . Pour substituer l’une des fonctions insérées par l’attribut module , créez une classe qui contiendra votre implémentation de la fonction et faites en sorte que l’attribut module s’applique à cette classe.
// 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);
}
};
Spécifications
Contexte d’attribut | Valeur |
---|---|
S’applique à | N’importe où |
Renouvelable | Non |
Attributs requis | Aucune |
Attributs non valides | Aucune |
Pour plus d'informations, consultez Contextes d'attribut.
Voir aussi
Attributs IDL
Attributs de classe
Attributs autonomes
Attributs Typedef, Enum, Union et Struct
usesgetlasterror
bibliothèque
helpcontext
helpstring
helpfile
version