Описание тега pinvoke

P/Invoke - это спецификация реализации, созданная Microsoft Common Language Infrastructure (CLI) для вызова библиотек собственного кода из управляемого кода.

P/Invoke расшифровывается как Platform Invocation Services. Это спецификация, созданная Microsoft для обеспечения взаимодействия с неуправляемым кодом из управляемых приложений. Данные, передаваемые в / из P/Invoke, обычно должны быть преобразованы в / из типов CLI, прежде чем их можно будет использовать. Этот процесс называется маршалингом.

Вики-сайт для объявлений методов P/Invoke - http://pinvoke.net/.

Базовое пространство имен в.NET Framework - System.Runtime.InteropServices.

Пример кода на C# класса, использующего P/Invoke (с http://pinvoke.net/):

class Beeper
{
    public enum beepType
    {
        SimpleBeep  = -1,
        OK    = 0x00,
        Question  = 0x20,
        Exclamation  = 0x30,
        Asterisk  = 0x40,
    }

    [DllImport("User32.dll", ExactSpelling=true)]
    private static extern bool MessageBeep(uint type);

    static void Main(string[] args)
    {
        Class1.beep(beepType.Asterisk);
        Thread.Sleep(1000);
        Class1.beep(beepType.Exclamation);
        Thread.Sleep(1000);
        Class1.beep(beepType.OK);
        Thread.Sleep(1000);
        Class1.beep(beepType.Question);
        Thread.Sleep(1000);
        Class1.beep(beepType.SimpleBeep);
    }

    public static void beep(beepType type)
    {
        MessageBeep((uint)type);
    }
}