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. ...