Описание тега 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);
}
}