文字列のマーシャリング

プラットフォーム呼び出しでは、文字列パラメーターがコピーされ、必要に応じて、.NET文字列形式 (Unicode) からアンマネージド形式 (ANSI) に変換されます。 マネージド文字列は不変であるため、プラットフォーム呼び出しでは、関数が戻るときにアンマネージド メモリからマネージド メモリにコピーされません。

次の表に、文字列のマーシャリング オプションの一覧を示し、その使用法について説明し、対応する.NETサンプルへのリンクを示します。

String Description Sample
値による。 文字列を In パラメーターとして渡します。 MsgBox
結果として。 アンマネージ コードから文字列を返します。 文字列
参照渡し。 StringBuilderを使用して、文字列を In/Out パラメーターとして渡します。 バッファー
構造体で値渡し。 In パラメーターである構造体内の文字列を渡します。 構造体
構造体で参照渡し (char*) In/Out パラメーターである構造体で文字列を渡します。 非管理関数は文字バッファーへのポインターを受け取り、バッファーサイズは構造体のメンバーである変数です。 文字列
構造体で参照渡し (char[]) In/Out パラメーターである構造体で文字列を渡します。 アンマネージ関数では、埋め込み文字バッファーが必要です。 OSInfo
(char*) によるクラス内。 クラス内の文字列を渡します (クラスは In/Out パラメーターです)。 アンマネージ関数は、文字バッファーへのポインターを受け取ります。 OpenFileDlg
(char[]) によるクラス内。 クラス内の文字列を渡します (クラスは In/Out パラメーターです)。 アンマネージ関数では、埋め込み文字バッファーが必要です。 OSInfo
値による文字列の配列として。 値渡しされる文字列の配列を作成します。 配列
文字列を含む構造体の配列として値渡し。 文字列を含む構造体の配列を作成し、配列を値渡しします。 配列

こちらも参照ください