msdn34_capa.jpg

Clique aqui para ler todos os artigos desta edição

 

Introdução ao Plataform Invoke

João Talles Dantas Batista

 

O PInvoke é a parte do .NET Framewok que fornece mecanismos para a execução de código não gerenciado a partir de uma aplicação desenvolvida na plataforma .NET (código gerenciado). Mas o que isso significa exatamente?

Imagine que a sua empresa adote o .NET Framework como plataforma de desenvolvimento. Provavelmente, já existe uma séria de regras de negócios implementadas em componentes (DLLs) e para que você não reescreva todos esses componentes, você pode, através do PInvoke, utilizar as funções desses a partir de uma aplicação desenvolvida sobre a plataforma .NET.

O objetivo deste artigo é apresentar o PInvoke, demonstrar como utilizá-lo, citar algumas de suas limitações e problemas.

Introdução ao Plataform Invoke

Os passos efetuados pelo PInvoke para executar uma função contida em uma DLL são os seguintes:

·        Localizar e carregar a DLL que contém a rotina solicitada;

·        Localizar a função desejada;

·        Mapear os parâmetros do código gerenciado para não gerenciado;

·        Transferir o fluxo de execução para o código não gerenciado.

O código .NET que deve ser desenvolvido, para que esses passos sejam efetuados pelo PInvoke são os seguintes:

·        Adicionar uma referência para o namespace System.Runtime.InteropServices;

·        Importar a DLL que contém a função não gerenciada que você deseja executar utilizando o atributo [DLLImport]. Esse atributo encontra-se no namespace System.Runtime.InteropServices importado anteriormente;

·        Declarar um método extern e static com o mesmo nome da função contida na DLL, mas sem implementação;

·        Opcionalmente, sobrescrever o mapeamento de parâmetros do código não gerenciado para o código gerenciado.

Executando funções da API Win32

Vamos demonstrar o uso do PInvoke, utilizando algumas funções da API Win32. ...

Quer ler esse conteúdo completo? Seja um assinante e descubra as vantagens.
  • 473 Cursos
  • 10K Artigos
  • 100 DevCasts
  • 30 Projetos
  • 80 Guias
Tenha acesso completo