System.Runtime.InteropServices.Marshal.Release
提供了一個方法集,這些方法用于配置設定非托管記憶體、複制非托管記憶體塊、将托管類型轉換為非托管類型,此外還提供了在與非托管代碼互動時使用的其他雜項方法。 有關此類型所有成員的清單,請參閱 Marshal 成員。 System.Object System.Runtime.InteropServices.Marsha [C#]
public sealed class Marshal [C++]
public __gc __sealed class Marshal [JScript]
public class Marshal 線程安全 此類型的所有公共靜态(Visual Basic 中為 Shared)成員對多線程操作而言都是安全的。但不保證任何執行個體成員是線程安全的。 備注 在 Marshal 類上定義的靜态(在 Visual Basic 中為 Shared)方法對于使用非托管代碼很重要。此處定義的大部分方法通常由進階開發人員(他們需要在托管和非托管程式設計模型之間提供橋梁)在生成自定義封送拆收器時使用。例如,StringToHGlobalAnsi 方法将 ANSI 字元從指定的字元串(在托管堆中)複制到非托管堆中的緩沖區。它還配置設定大小合适的目标堆,如下面的 C# 代碼所示: String s = "Hello";
IntPtr p = Marshal.StringToHGlobalAnsi(s); 公共語言運作庫提供了特定的封送處理功能。有關封送處理行為的詳細資訊,請參見 Interop 封送處理。 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 | |