Marshal クラス

アンマネージ コードを扱うときに使用できるさまざまなメソッドを提供します。これらのメソッドを使用すると、アンマネージ メモリの割り当て、アンマネージ メモリ ブロックのコピー、マネージ型からアンマネージ型への変換などができます。

この型のすべてのメンバの一覧については、Marshal メンバ を参照してください。

System.Object
   System.Runtime.InteropServices.Marshal

NotInheritable Public Class Marshal
[C#]
public sealed class Marshal
[C++]
public __gc __sealed class Marshal
[JScript]
public class Marshal

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

Marshal クラスで定義した静的 (Visual Basic では Shared) メソッドは、アンマネージ コードの使用に不可欠です。通常、ここで定義されているほとんどのメソッドは、マネージ プログラミング モデルとアンマネージ プログラミング モデル間のブリッジを提供する必要がある、カスタム マーシャラを構築する熟練した開発者によって使用されます。たとえば、 StringToHGlobalAnsi メソッドは、指定した文字列 (マネージ ヒープ内) からアンマネージ ヒープ内のバッファに ANSI 文字をコピーします。また、次に示す C# コードのように、コピー先のヒープを適切なサイズで割り当てます。

String s = "Hello";
    IntPtr p = Marshal.StringToHGlobalAnsi(s);

具体的なマーシャリングの機能は、共通言語ランタイムが提供します。マーシャリングの動作の詳細については、「 相互運用マーシャリング 」を参照してください。

Marshal クラスは、さまざまな種類のメンバで構成されています。各メンバをその用途別に分類した表を次に示します。

カテゴリ メンバ
高度なマーシャリング GetManagedThunkForUnmanagedMethodPtr, GetUnmanagedThunkForManagedMethodPtr, NumParamBytes
COM ライブラリ関数 BindToMoniker, GetActiveObject
COM ユーティリティ ChangeWrapperHandleStrength, CreateWrapperOfType, GetComObjectData, GetComSlotForMethodInfo, GetEndComSlot, GetMethodInfoForComSlot, GetStartComSlot, ReleaseComObject, SetComObjectData
データ変換 マネージ型からアンマネージ型への変換: CopyGetComInterfaceForObjectGetIDispatchForObjectGetIUnknownForObjectStringToBSTRStringToCoTaskMemAnsiStringToCoTaskMemAutoStringToCoTaskMemUniStringToHGlobalAnsiStringToHGlobalAutoStringToHGlobalUniStructureToPtrUnsafeAddrOfPinnedArrayElement

アンマネージ型からマネージ型への変換: CopyGetObjectForIUnknownGetObjectForNativeVariantGetObjectsForNativeVariantsGetTypedObjectForIUnknownGetTypeForITypeInfoPtrToStringAnsiPtrToStringAutoPtrToStringBSTRPtrToStringUni

プロパティ: SystemDefaultCharSizeSystemMaxDBCSCharSize

直接読み込みと直接書き込み ReadByte, ReadInt16, ReadInt32, ReadInt64, ReadIntPtr, WriteByte, WriteInt16, WriteInt32, WriteInt64, WriteIntPtr
エラー処理 COM: GetHRForExceptionThrowExceptionForHR

Win32: GetLastWin32ErrorGetExceptionCodeGetExceptionPointers

両方: GetHRForLastWin32Error

ホスト ユーティリティ GetThreadFromFiberCookie
IUnknown AddRef, QueryInterface, Release
メモリ管理 COM: AllocCoTaskMemReAllocCoTaskMemFreeCoTaskMemFreeBSTR

Win32: AllocHGlobalReAllocHGlobalFreeHGlobal

両方: DestroyStructure

プラットフォーム呼び出しユーティリティ Prelink, PrelinkAll, GetHINSTANCE
構造体の検査 OffsetOf, SizeOf
型情報。 GenerateGuidForType, GenerateProgIdForType, GetTypeInfoName, GetTypeLibGuid, GetTypeLibGuidForAssembly, GetTypeLibLcid, GetTypeLibName, IsComObject, IsTypeVisibleFromCom

必要条件

名前空間: System.Runtime.InteropServices

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

Marshal メンバ | System.Runtime.InteropServices 名前空間