Usando PInvoke explícito no C++ (atributo DllImport)

O .NET Framework fornece recursos explícitos de Invocação de Plataforma (ou PInvoke) com o atributo Dllimport para permitir que aplicativos gerenciados chamem funções não gerenciadas empacotadas dentro de DLLs. O PInvoke explícito é necessário nas situações em que APIs não gerenciadas são empacotadas como DLLs e o código-fonte não está disponível. Chamar funções Win32, por exemplo, requer PInvoke. Em outras situações, use PInvoke implícito; confira Usar a interoperabilidade do C++ (PInvoke Implícito) para mais informações.

O PInvoke funciona usando DllImportAttribute. Esse atributo, que leva o nome da DLL como seu primeiro argumento, é colocado antes de uma declaração de função para cada ponto de entrada de DLL que será usado. A assinatura da função deve corresponder ao nome de uma função exportada pela DLL (mas alguma conversão de tipo pode ser executada implicitamente definindo as declarações DllImport em termos de tipos gerenciados).

O resultado é um ponto de entrada gerenciado para cada função DLL nativa que contém o código de transição necessário (ou thunk) e conversões de dados simples. Em seguida, as funções gerenciadas podem chamar a DLL por meio desses pontos de entrada. O código inserido em um módulo como resultado do PInvoke é totalmente gerenciado.

Nesta seção

Confira também

Chamando funções nativas de código gerenciado