module (C++)
Define el bloque de biblioteca en el archivo .idl.
Sintaxis
[ 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,) ];
Parámetros
type
(Opcional) Puede ser uno de los siguientes:
dll
Agrega funciones y clases que permiten que el archivo DLL resultante funcione como un servidor COM en proceso. Este es el valor predeterminado.exe
Agrega funciones y clases que permiten que el ejecutable resultante funcione como servidor COM fuera de proceso.service
Agrega funciones y clases que permiten que el ejecutable resultante funcione como servicio NT.unspecified
Deshabilita la inserción de código ATL relacionado con el atributo de módulo: la inserción de la clase de módulo de ATL, la instancia global _AtlModule y funciones de punto de entrada. No deshabilita la inserción de código ATL como consecuencia de otros atributos del proyecto.
name
(Opcional) Nombre del bloque de biblioteca.
version
(Opcional) Número de versión que quiere asignar al bloque de biblioteca. El valor predeterminado es 1,0.
uuid
Identificador único para la biblioteca. Si omite este parámetro, se generará automáticamente un identificador para la biblioteca. Es posible que tenga que recuperar el uuid del bloque de biblioteca, que puede hacer mediante el identificador __uuidof( libraryname ).
lcid
Parámetro de localización. Consulte lcid para obtener más información.
control
(Opcional) Especifica que todas las coclases de la biblioteca son controles.
helpstring
Especifica la biblioteca de tipos.
helpstringdll
(Opcional) Establece el nombre del archivo .dll que se va a usar para realizar una búsqueda de cadenas del documento. Consulte helpstringdll para obtener más información.
helpfile
(Opcional) Nombre del archivo de ayuda para la biblioteca de tipos.
helpcontext
(Opcional) Identificador de ayuda para esta biblioteca de tipos.
helpstringcontext
(Opcional) Consulte helpstringcontext para obtener más información.
hidden
(Opcional) Impide que se muestre toda la biblioteca. Este uso está diseñado para emplearlo con controles. Los hosts deben crear una biblioteca de tipos que ajuste el control con propiedades extendidas. Consulte el atributo MIDL hidden para obtener más información.
restricted
(Opcional) No es posible llamar a los miembros de la biblioteca arbitrariamente. Consulte el atributo MIDL restricted para obtener más información.
custom
(Opcional) Uno o más atributos; esto es similar al atributo custom. El primer parámetro de custom es el GUID del atributo. Por ejemplo:
[module(custom={guid,1}, custom={guid1,2})]
resource_name
Identificador de recurso de cadena del archivo .rgs usado para registrar el identificador de aplicación de la DLL, el ejecutable o el servicio. Cuando el módulo es de tipo service, este argumento también se usa para obtener el identificador de la cadena que contiene el nombre del servicio.
Nota:
Tanto el archivo .rgs como la cadena que contiene el nombre del servicio deben contener el mismo valor numérico.
Comentarios
A menos que especifique el parámetro restricted en emitidl, se requiere module en todos los programas que usen atributos de C++.
Se creará un bloque de biblioteca si, además del atributo module , el código fuente también usa dispinterface, dual, objecto un atributo que implique coclase.
Se permite un bloque de biblioteca en un archivo .idl. Si en el código fuente hay varias entradas de módulo, se combinarán con los valores de parámetro más recientes que se implementen.
Si este atributo se usa en un proyecto que usa ATL, el comportamiento del atributo cambiará. Además del comportamiento anterior, el atributo también inserta un objeto global (denominado _AtlModule
) del tipo correcto y el código de soporte adicional. Si el atributo es independiente, inserta una clase derivada del tipo de módulo correcto. Si el atributo se aplica a una clase, agrega una clase base del tipo de módulo correcto. El tipo correcto lo determina el valor del parámetro type:
type
= dllCAtlDllModuleT se usa como clase base y como los puntos de entrada del archivo DLL estándar necesarios para un servidor COM. Estos puntos de entrada son DllMain, DllRegisterServer, DllUnRegisterServer, DllCanUnloadNowy DllGetClassObject.
type
= exeCAtlExeModuleT se usa como clase base y como el punto de entrada ejecutable estándar WinMain.
type
= serviciosCAtlServiceModuleT se usa como clase base y como el punto de entrada ejecutable estándar WinMain.
type
= unspecifiedDeshabilita la inserción de código ATL relacionado con el atributo de módulo.
Ejemplo
En el código siguiente se muestra cómo crear un bloque de biblioteca en el archivo .idl generado.
// cpp_attr_ref_module1.cpp
// compile with: /LD
[module(name="MyLibrary", version="1.2", helpfile="MyHelpFile")];
En el código siguiente se muestra que puede proporcionar su propia implementación de una función que aparecerá en el código insertado como resultado de usar module. Consulte /Fx para obtener más información sobre cómo ver código insertado. Para reemplazar una de las funciones insertadas por el atributo module , cree una clase que contendrá la implementación de la función y haga que el atributo module se aplique a esa clase.
// 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);
}
};
Requisitos
Contexto de atributo | Valor |
---|---|
Se aplica a | En cualquier lugar |
Reiterativo | No |
Atributos requeridos | Ninguno |
Atributos no válidos | Ninguno |
Para obtener más información, vea Contextos de atributo.
Consulte también
Atributos IDL
Atributos de clase
Atributos independientes
Typedef, Enum, Union y Struct (atributos)
usesgetlasterror
biblioteca
helpcontext
helpstring
helpfile
version