Open棟梁Project - マイクロソフト系技術情報 Wiki
マイクロソフト技術書では、
における「データ変換」を指していることが多い。
マネージコード・アンマネージドコード間のデータ変換のこと。
C/C++と.NETでは当然メモリ上のデータの表現が異なる。
例えば、.NETでは、
なので、マネージコード・アンマネージドコード間のデータ変換が必要になる。
マネージ(.NET)からアンマネージ(C/C++)のDLLやCOMを呼び出す場合、
相互運用マーシャラーによって、マネージコード・アンマネージドコード間のデータが変換される。
Marshalクラスを使用して構造体のマーシャリングが可能。
構造体配列、構造体配列配列、構造体配列の階層構造など。
構造体配列のマーシャリングを行う場合は、
要素数などは別途引数などを用意して把握できるようにしておく必要がある。
・・・
生成済みのSTAのCOMコンポーネントのポインタを使用して
マルチスレッド・クライアントから呼び出した場合、
Windwosメッセージキューによって呼び出しが直列化される。
これもマーシャリングの一種である。
ローカル・プロセスの引数・戻り値のデータをリモート・プロセスにコピーする。
ローカル・プロセスの引数・戻り値のデータをリモート・サーバのプロセスにコピーする。
COMのカスタムマーシャリングを説明にするには、
ADODB.Recordsetのマーシャリングなどが良いサンプルになる。
また、カスタムマーシャリングを相互運用(マネージ型を COM に公開する)で使用することも可能。