Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

ココに書いている通り。

マイクロソフト技術書では、

における「データ変換」を指していることが多い。

相互運用マーシャリング

マネージコード・アンマネージドコード間のデータ変換

C/C++と.NETでは当然メモリ上のデータの表現が異なる。

.NETではポインタを直接扱うことができないし、
オブジェクトはGC(ガベージコレクタ)などで管理されている。

マネージ(.NET)からアンマネージ(C/C++)のDLLやCOMを呼び出す場合、
相互運用マーシャラーによって、マネージコード・アンマネージドコード間のデータが変換される。

構造体のマーシャリング

Marshalクラスを使用して構造体のマーシャリングが可能。

構造体配列、構造体配列配列、構造体配列の階層構造など。

構造体配列のマーシャリングを行う場合は、
要素数などは別途引数などを用意して把握できるようにしておく必要がある。

COM

COMを使用したイン・プロセス呼び出し

生成済みのSTAのCOMコンポーネントのポインタを使用して
マルチスレッド・クライアントから呼び出した場合、
Windwosメッセージキューによって呼び出しが直列化される。

これもマーシャリングの一種である。

COMを使用した別・プロセス呼び出し

ローカル・プロセスの引数・戻り値のデータをリモート・プロセスにコピーする。

DCOMを使用したリモート・サーバ呼び出し

ローカル・プロセスの引数・戻り値のデータをリモート・サーバのプロセスにコピーする。

カスタムマーシャリング

COMのカスタムマーシャリングを説明にするには、
ADODB.Recordsetのマーシャリングなどが良いサンプルになる。

また、カスタムマーシャリングを相互運用(マネージ型を COM に公開する)で使用することも可能。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS