各種のマーシャリングのサンプル

ガベージ コレクションやスレッド処理などの要因が相互運用マーシャラーの動作に影響を与えることがあります。 さらに、プログラミング モデルおよび型モデルにおける微妙な違いのために、アンマネージ ライブラリへのデータの引き渡しで混乱が生じる場合があります。 このセクションでは、そのような違いに対処したサンプルをいくつか示します。

各種の項目の型に関するマーシャリング オプションを次の表に列挙して、その使用方法を説明し、対応するサンプルへのリンクを示します。

項目の型

説明

サンプル

関数ポインター

関数ポインターを要求するアンマネージ関数にデリゲートを渡します。

コールバック

HandleRef

HandleRef 構造体を使用して、ガベージ コレクションを防ぎます。

HandleRef

LPARAM

GCHandle 構造体を使用して、LPARAM 型を要求するアンマネージ関数にマネージ オブジェクトを渡します。

GCHandle

シングルスレッド アパートメント (STA)/マルチスレッド アパートメント (MTA)

アンマネージ関数が CoInitialize を呼び出すときに、既定のアパートメント設定を変更します。

ActiveDir

void*

パラメーターとして void* を持つ関数を呼び出します。

Void

参照

概念

プラットフォーム呼び出しのデータ型

文字列のマーシャリング

クラス、構造体、および共用体のマーシャリング

型の配列のマーシャリング

その他の技術情報

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