プラットフォーム呼び出しによるデータのマーシャリング

アンマネージ ライブラリからエクスポートされた関数を呼び出すために、.NET Framework アプリケーションはそのアンマネージ関数を表す、マネージ コード内の関数プロトタイプを必要とします。プラットフォーム呼び出しによってデータを正確にマーシャリングできるようにするプロトタイプを作成するには、次の処理を行う必要があります。

  • マネージ コード内の静的関数またはメソッドに DLLImportAttribute 属性を適用します。

  • アンマネージ データ型の代わりに、マネージ データ型を使用します。

アンマネージ関数と共に提供されるドキュメントを使用すると、等価のマネージ プロトタイプを構築できます。その場合には、属性とそのオプションのフィールドを適用し、アンマネージ型の代わりにマネージ データ型を使用します。DllImportAttribute の適用方法については、「アンマネージ DLL 関数の処理」を参照してください。

このセクションでは、アンマネージ ライブラリによってエクスポートされた関数に引数を渡して戻り値を受け取るマネージ関数プロトタイプの作成方法をサンプルで紹介します。このサンプルでは、さらに、いつ MarshalAsAttribute 属性と Marshal クラスを使用して、明示的にデータをマーシャリングする必要があるかについても示します。

このセクションの内容

  • PinvokeLib.dll
    Pinvoke.dll によって提供されるライブラリ関数を定義するコードを示します。
  • 文字列のマーシャリング
    文字列を値または参照渡しする方法、および構造体、クラス、または配列に組み込んで渡す方法を説明します。
  • 型の配列のマーシャリング
    整数から構成される多次元配列を値渡しする方法、および 1 次元配列を参照渡しする方法を説明します。

関連するセクション