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
データ変換
マネージ型からアンマネージ型への変換: 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 名前空間