アンマネージ コードを扱うときに使用できるさまざまなメソッドを提供します。これらのメソッドを使用すると、アンマネージ メモリの割り当て、アンマネージ メモリ ブロックのコピー、マネージ型からアンマネージ型への変換などができます。
この型のすべてのメンバの一覧については、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 |
データ変換 |
マネージ型からアンマネージ型への変換: Copy 、 GetComInterfaceForObject 、 GetIDispatchForObject 、 GetIUnknownForObject 、 StringToBSTR 、 StringToCoTaskMemAnsi 、 StringToCoTaskMemAuto 、 StringToCoTaskMemUni 、 StringToHGlobalAnsi 、 StringToHGlobalAuto 、 StringToHGlobalUni 、 StructureToPtr 、 UnsafeAddrOfPinnedArrayElement
アンマネージ型からマネージ型への変換: Copy 、 GetObjectForIUnknown 、 GetObjectForNativeVariant 、 GetObjectsForNativeVariants 、 GetTypedObjectForIUnknown 、 GetTypeForITypeInfo 、 PtrToStringAnsi 、 PtrToStringAuto 、 PtrToStringBSTR 、 PtrToStringUni
プロパティ: SystemDefaultCharSize 、 SystemMaxDBCSCharSize |
直接読み込みと直接書き込み |
ReadByte, ReadInt16, ReadInt32, ReadInt64, ReadIntPtr, WriteByte, WriteInt16, WriteInt32, WriteInt64, WriteIntPtr |
エラー処理 |
COM: GetHRForException 、 ThrowExceptionForHR
Win32: GetLastWin32Error 、 GetExceptionCode 、 GetExceptionPointers
両方: GetHRForLastWin32Error |
ホスト ユーティリティ |
GetThreadFromFiberCookie |
IUnknown |
AddRef, QueryInterface, Release |
メモリ管理 |
COM: AllocCoTaskMem 、 ReAllocCoTaskMem 、 FreeCoTaskMem 、 FreeBSTR
Win32: AllocHGlobal 、 ReAllocHGlobal 、 FreeHGlobal
両方: 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 名前空間