module (C++)
Define o bloco de biblioteca no arquivo .idl.
Sintaxe
[ 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
tipo
(Opcional) Pode ser uma destas opções:
dll
Adiciona funções e classes que permitem que a DLL resultante funcione como um servidor COM em processo. Este é o valor padrão.exe
Adiciona funções e classes que permitem que o executável resultante funcione como um servidor COM fora do processo.service
Adiciona funções e classes que permitem que o executável resultante funcione como um serviço NT.unspecified
Desabilita a injeção de código ATL relacionada ao atributo de módulo: a injeção da classe módulo ATL, _AtlModule de instância global e funções de ponto de entrada. Não desabilita a injeção de código ATL devido a outros atributos no projeto.
name
(Opcional) O nome do bloco de biblioteca.
version
(Opcional) O número de versão que você deseja atribuir ao bloco de biblioteca. O valor padrão é 1.0.
uuid
A ID exclusiva da biblioteca. Se você omitir esse parâmetro, uma ID será gerada automaticamente para a biblioteca. Talvez seja necessário recuperar o uuid do seu bloco de biblioteca, o que pode ser feito usando o identificador __uuidof( libraryname ).
lcid
O parâmetro de localização. Confira lcid para obter mais informações.
control
(Opcional) Especifica que todas as coclasses na biblioteca são controles.
helpstring
Especifica a biblioteca de tipos.
helpstringdll
(Opcional) Define o nome do arquivo .dll a ser usado para realizar uma pesquisa de cadeia de caracteres de documento. Confira helpstringdll para obter mais informações.
helpfile
(Opcional) O nome do arquivo de Ajuda para a biblioteca de tipos.
helpcontext
(Opcional) A ID da Ajuda para este tipo de biblioteca.
helpstringcontext
(Opcional) Confira helpstringcontext para obter mais informações.
hidden
(Opcional) Impede que toda a biblioteca seja exibida. Destina-se ao uso com controles. Hosts precisam criar uma nova biblioteca de tipos que encapsule o controle com propriedades estendidas. Confira o atributo MIDL hidden para obter mais informações.
restricted
(Opcional) Os membros da biblioteca não podem ser chamados arbitrariamente. Confira o atributo MIDL restricted para obter mais informações.
personalizado
(Opcional) Um ou mais atributos; é semelhante ao atributo custom. O primeiro parâmetro para custom é a GUID do atributo. Por exemplo:
[module(custom={guid,1}, custom={guid1,2})]
resource_name
A ID do recurso de cadeia de caracteres do arquivo .rgs usado para registrar a ID do APLICATIVO da DLL, executável ou serviço. Quando o módulo é de tipo de serviço, esse argumento também é usado para obter a ID da cadeia de caracteres que contém o nome do serviço.
Observação
Tanto o arquivo .rgs quanto a cadeia de caracteres que contém o nome do serviço devem conter o mesmo valor numérico.
Comentários
A menos que você especifique o parâmetro restricted para emitidl, module é necessário em qualquer programa que use atributos C++.
Um bloco de biblioteca será criado se, além do atributo module, o código-fonte também usar dispinterface, dual, object ou um atributo que implica coclasse.
Um bloco de biblioteca é permitido em um arquivo .idl. Várias entradas de módulo no código-fonte serão mescladas, com os valores de parâmetro mais recentes sendo implementados.
Se esse atributo for usado em um projeto que usa ATL, o comportamento do atributo será alterado. Além do comportamento acima, o atributo também insere um objeto global (chamado _AtlModule
) do tipo correto e do código de suporte adicional. Se o atributo for autônomo, ele inserirá uma classe derivada do tipo de módulo correto. Se o atributo for aplicado a uma classe, ele adiciona uma classe base do tipo de módulo correto. O tipo correto é determinado pelo valor do parâmetro de tipo :
type
= dllCAtlDllModuleT é usado como a classe base e os pontos de entrada de DLL padrão necessários para um servidor COM. Esses pontos de entrada são DllMain, DllRegisterServer, DllUnRegisterServer, DllCanUnloadNow e DllGetClassObject.
type
= exeCAtlExeModuleT é usado como a classe base e o ponto de entrada executável padrão WinMain.
type
= serviceCAtlServiceModuleT é usado como a classe base e o ponto de entrada executável padrão WinMain.
type
= unspecifiedDesabilita a injeção de código ATL relacionada ao atributo do módulo.
Exemplo
O código a seguir mostra como criar um bloco de biblioteca no arquivo .idl gerado.
// cpp_attr_ref_module1.cpp
// compile with: /LD
[module(name="MyLibrary", version="1.2", helpfile="MyHelpFile")];
O código a seguir mostra que você pode fornecer sua própria implementação de uma função que seria exibida no código que foi injetado como resultado do uso do módulo. Confira /Fx para obter mais informações sobre como exibir o código injetado. Para substituir uma das funções inseridas pelo atributo module, crie uma classe que conterá sua implementação da função e faça com que o atributo module se aplique a essa 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);
}
};
Requisitos
Contexto do atributo | Valor |
---|---|
Aplicável ao | Anywhere |
Repetível | Não |
Atributos obrigatórios | Nenhum |
Atributos inválidos | Nenhum |
Para obter mais informações, confira Contextos de Atributo.
Confira também
Atributos de IDL
Atributos de classe
Atributos independentes
Atributos Typedef, Enum, Union e Struct
usesgetlasterror
biblioteca
helpcontext
helpstring
helpfile
version