アンマネージ DLL 関数の処理

プラットフォーム呼び出しは、マネージ コードから、たとえば Win32 API の関数のような、ダイナミック リンク ライブラリ (DLL) に実装されたアンマネージ関数を呼び出すことができるようにするサービスです。プラットフォーム呼び出しは、エクスポートされた関数を検索して呼び出し、必要に応じてその引数 (整数、文字列、配列、構造体など) をマーシャリングして、相互運用上の境界にまたがる動作を可能にします。このサービスの詳細については、「プラットフォーム呼び出しの詳細」を参照してください。

このセクションでは、アンマネージ DLL 関数の処理と関連する作業について説明します。次に示す作業のほかに、全般的な検討事項と、追加情報や例を参照できるリンクも提供します。

エクスポートされた DLL 関数を処理するには

  1. DLL 内の関数を識別します

    少なくとも、関数の名前と、その関数を格納している DLL の名前を指定する必要があります。

  2. DLL 関数を保持するクラスを作成します

    既存のクラスを使用するか、各アンマネージ関数用のクラスを個別に作成するか、または関連するアンマネージ関数のセットを格納するクラスを 1 つ作成します。

  3. マネージ コードでのプロトタイプを作成します

    [Visual Basic] Declare ステートメントを Function キーワードおよび Lib キーワードと共に使用します。まれに、DllImportAttributeShared Function キーワードと共に使用できる場合もあります。この場合については、このセクションで後述します。

    [C#] DllImportAttribute を使って、DLL と関数を識別します。メソッドに static 修飾子と extern 修飾子を使ってマークを付けます。

    [C++] DllImportAttribute を使って、DLL と関数を識別します。ラッパー メソッドまたはラッパー関数には extern "C" でマークを付けます。

  4. DLL 関数を呼び出します

    他のマネージ メソッドの場合と同じ方法で、マネージ クラスのメソッドを呼び出します。構造体を渡す場合や、コールバック関数を実装する場合は、特別な例に属します。

プラットフォーム呼び出しと共に使用する .NET ベースの宣言を構築する方法を示す例については、「プラットフォーム呼び出しによるデータのマーシャリング」を参照してください。

参照

概念

プラットフォーム呼び出しの詳細
プラットフォーム呼び出しの例

その他の技術情報

アンマネージ コードとの相互運用
相互運用マーシャリング