P/Invoke
ナビゲーションに移動
検索に移動
P/Invoke(語源:Platform Invoke)とは、.NET Frameworkにおける共通言語基盤 (CLI) の機能の一つで、マネージコードから動的ライブラリ内のネイティブコードを呼び出すことを可能にするものである。受け渡しされるデータ型は、必要であればCLIによって適切に変換されるが、メタデータによってプログラマーが明示的に変換方法を指定することもできる。こうしたデータの変換をマーシャリングという。
概要
大雑把にいえばC#からCで書かれたライブラリの関数を呼び出せる。 いってみればJavaのJNIとほとんど同じだな。 だがJavaより遥かに簡潔明瞭に書ける。 マネージコードからネイティブコードへは適切に切り替えられるためunsafeは不要である。
重い処理を部分的にネイティブコードで書いて加速を目論む用途などで使われるが、P/Invokeの呼び出し(マネージコードとネイティブコードの切り替え)が絶望的なほど遅いので頻繁に呼ぶと逆に遅くなるパターンも多い。これもJavaのJNIと同じだな。
Xamarinなどでは標準対応されていないOSの標準ライブラリを叩くのにも活躍する。
関連項目
外部リンク
- PInvoke.net - Win32APIをはじめとしたアンマネージAPIのP/Invoke宣言を集めたデータベースサイト。
- アンマネージ コードとの相互運用 - MSDN2