ExpertiDict

C# · Avançado · Inglês · Técnico

P/Invoke

/ˌpi ɪnˈvoʊk/substantivo

Mecanismo que chama funções nativas de bibliotecas não gerenciadas (DLL ou .so) a partir de C#, declarando a assinatura com DllImport ou LibraryImport e cuidando do marshalling dos tipos.

Onde usar

Aparece ao integrar APIs do sistema operacional ou bibliotecas em C, como a kernel32 do Windows. Um tipo ou convenção de chamada errados causam crashes sutis, e o LibraryImport gera o marshalling em compilação, exigindo AllowUnsafeBlocks no projeto.

Em código

using System.Runtime.InteropServices;

static partial class Nativo
{
  [LibraryImport("kernel32.dll")]
  public static partial uint GetTickCount();
}

Exemplos

We call the native library through P/Invoke.

Chamamos a biblioteca nativa por P/Invoke.

Check the P/Invoke signature, the struct layout is wrong.

Confira a assinatura do P/Invoke, o layout da struct está errado.

Cuidado

Não confunda com COM interop ou C++/CLI: P/Invoke serve para funções planas exportadas por bibliotecas nativas.

Sinônimos

Platform Invoke

Origem

Abreviação de Platform Invoke.

Veja também

Todos os termos de C#