ネイティブ相互運用性
次の各記事では、.NET での "ネイティブ相互運用" のさまざまな方法を示しています。
ネイティブ コードの呼び出しが必要になる理由としては、次のようなものがあります。
- オペレーティング システムに付属している大量の API が、マネージド クラス ライブラリに存在していない。 この主な例には、ハードウェアやオペレーティング システムの管理機能へのアクセスがあります。
- C スタイル ABI (ネイティブ ABI) を持つか生成できる他のコンポーネントと通信する。たとえば、Java ネイティブ インターフェイス (JNI) を介して公開されている Java コードや、ネイティブ コンポーネントを生成できるその他のマネージド言語です。
- Windows では、インストールされるソフトウェアのほとんどが (たとえば Microsoft Office スイート)、COM コンポーネントを登録します。このコンポーネントは、そのソフトウェアのプログラムを表すものであり、開発者による自動化や使用が可能になります。 これも、ネイティブ相互運用性を必要とします。
開発者がネイティブ コンポーネントとやり取りすることが必要になる状況やシナリオは、上記の一覧に示すものがすべてではありません。 たとえば、.NET クラス ライブラリは、ネイティブ相互運用性サポートを使用して、コンソールのサポートと操作、ファイル システムのアクセスなど、そのかなりの数の API を実装しています。 ただし、必要であればできる、ということを覚えておくことが重要です。
注意
このセクションのほとんどの例は、.NET Core でサポートされる 3 つのプラットフォームすべて (Windows、Linux、macOS) について提示しています。 ただし、短い解説的な例については、Windows ファイル名と拡張子 (つまり、ライブラリの場合は "dll") を使用する 1 つのサンプルだけを示します。 その機能が Linux や macOS で使用できないというわけではなく、単に便宜上のためにそうしています。