プラットフォーム呼び出しによるデータのマーシャリング
更新 : 2007 年 11 月
アンマネージ ライブラリからエクスポートされた関数を呼び出すために、.NET Framework アプリケーションはそのアンマネージ関数を表す、マネージ コード内の関数プロトタイプを必要とします。プラットフォーム呼び出しによってデータを正確にマーシャリングできるようにするプロトタイプを作成するには、次の処理を行う必要があります。
マネージ コード内の静的関数またはメソッドに DLLImportAttribute 属性を適用します。
アンマネージ データ型の代わりに、マネージ データ型を使用します。
アンマネージ関数と共に提供されるドキュメントを使用すると、等価のマネージ プロトタイプを構築できます。その場合には、属性とそのオプションのフィールドを適用し、アンマネージ型の代わりにマネージ データ型を使用します。DllImportAttribute の適用方法については、「アンマネージ DLL 関数の処理」を参照してください。
このセクションでは、アンマネージ ライブラリによってエクスポートされた関数に引数を渡して戻り値を受け取るマネージ関数プロトタイプの作成方法をサンプルで紹介します。このサンプルでは、さらに、いつ MarshalAsAttribute 属性と Marshal クラスを使用して、明示的にデータをマーシャリングする必要があるかについても示します。
このセクションの内容
プラットフォーム呼び出しのデータ型
マネージ データ型および対応するアンマネージ データ型の一覧を示します。PinvokeLib.dll
Pinvoke.dll によって提供されるライブラリ関数を定義するコードを示します。文字列のマーシャリング
文字列を値または参照渡しする方法、および構造体、クラス、または配列に組み込んで渡す方法を説明します。クラス、構造体、および共用体のマーシャリング
クラスを値渡しする方法、各種構造体の渡し方、および値と混合型を含む共用体の渡し方を説明します。型の配列のマーシャリング
整数から構成される多次元配列を値渡しする方法、および 1 次元配列を参照渡しする方法を説明します。各種のマーシャリングのサンプル
相互運用マーシャリングの動作に影響を与えるガベージ コレクションとスレッド処理の特徴を説明します。
関連するセクション
相互運用マーシャリング
COM 相互運用機能とプラットフォーム呼び出しによるマーシャリングについて説明します。既定のマーシャリングの動作
相互運用マーシャリング サービスがデータをマーシャリングするときに従う規則について説明します。アンマネージ DLL 関数の処理
プラットフォーム呼び出しを使ってアンマネージ DLL 関数を呼び出す方法を説明します。