Marshal 成员

提供了一个方法集,这些方法用于分配非托管内存、复制非托管内存块、将托管类型转换为非托管类型,此外还提供了在与非托管代码交互时使用的其他杂项方法。

下表列出了由 Marshal 类型公开的成员。

公共字段

  名称 说明
Public field Static Supported by the .NET Compact Framework SystemDefaultCharSize 表示系统上的默认字符大小;Unicode 系统上默认值为 2,ANSI 系统上默认值为 1。此字段为只读。
Public field Static SystemMaxDBCSCharSize 表示用于当前操作系统的双字节字符集 (DBCS) 的最大大小(以字节为单位)。此字段为只读。

页首

公共方法

  名称 说明
Public method Static Supported by the .NET Compact Framework AddRef 递增指定接口上的引用计数。
Public method Static Supported by the .NET Compact Framework AllocCoTaskMem 从 COM 任务内存分配器分配指定大小的内存块。
Public method Static AllocHGlobal 已重载。 使用 LocalAlloc 分配内存块。
Public method Static BindToMoniker 获取由指定的名字对象标识的接口指针。
Public method Static ChangeWrapperHandleStrength 在 COM 可调用包装 (CCW) 句柄包含的对象上更改它的强度。
Public method Static Supported by the .NET Compact Framework Copy 已重载。 将数据从托管数组复制到非托管内存指针,或从非托管内存指针复制到托管数组。
Public method Static CreateAggregatedObject 聚合托管对象和指定的 COM 对象。
Public method Static CreateWrapperOfType 在指定类型的对象中包装指定的 COM 对象。
Public method Static DestroyStructure 释放指定的非托管内存块所指向的所有子结构。
Public method Supported by the .NET Compact Framework Equals  已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。)
Public method Static FinalReleaseComObject 通过将提供的运行库可调用包装 (RCW) 的引用计数设置为 0,释放对 RCW 的所有引用。
Public method Static FreeBSTR 使用 SysFreeString 释放 BSTR。
Public method Static Supported by the .NET Compact Framework FreeCoTaskMem 释放由非托管 COM 任务内存分配器使用 Marshal.AllocCoTaskMem 分配的内存块。
Public method Static FreeHGlobal 释放以前使用 AllocHGlobal 从进程的非托管内存中分配的内存。
Public method Static GenerateGuidForType 返回指定类型的全局唯一标识符 (GUID),或使用类型库导出程序 (TlbExp.exe) 所用的算法生成 GUID。
Public method Static GenerateProgIdForType 返回指定类型的编程标识符 (ProgID)。
Public method Static GetActiveObject 从运行对象表 (ROT) 获取指定对象的运行实例。
Public method Static Supported by the .NET Compact Framework GetComInterfaceForObject 返回一个接口指针,该接口指针表示对象的指定接口。
Public method Static GetComInterfaceForObjectInContext 返回一个接口指针,该指针表示对象的指定接口(如果调用方与对象在同一上下文中)。
Public method Static GetComObjectData 从指定的 COM 对象获取指定键所引用的数据。
Public method Static GetComSlotForMethodInfo 获取指定的 System.Reflection.MemberInfo 在向 COM 公开时的虚函数表 (VTBL) 槽。
Public method Static GetDelegateForFunctionPointer 将非托管函数指针转换为委托。
Public method Static GetEndComSlot 获取在向 COM 公开时某个类型的虚函数表 (VTBL) 中的最后一个槽。
Public method Static GetExceptionCode 检索标识所发生异常的类型的代码。
Public method Static Supported by the .NET Compact Framework GetExceptionForHR 已重载。 将 HRESULT 错误代码转换为对应的 Exception 对象。
Public method Static GetExceptionPointers 检索与计算机无关的异常描述以及有关异常发生时线程的状态信息。
Public method Static Supported by the .NET Compact Framework GetFunctionPointerForDelegate 将委托转换为可从非托管代码调用的函数指针。
Public method Supported by the .NET Compact Framework GetHashCode  用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。)
Public method Static GetHINSTANCE 返回指定模块的实例句柄 (HINSTANCE)。
Public method Static Supported by the .NET Compact Framework GetHRForException 将指定异常转换为 HRESULT。
Public method Static GetHRForLastWin32Error 返回 HRESULT,它与使用 Marshal 执行的 Win32 代码引起的最后一个错误相对应。
Public method Static Supported by the .NET Compact Framework GetIDispatchForObject 从托管对象返回一个 IDispatch 接口。
Public method Static GetIDispatchForObjectInContext 如果调用方与托管对象在同一上下文中,则从该对象返回一个 IDispatch 接口指针。
Public method Static GetITypeInfoForType 从托管类型返回一个 ITypeInfo 接口。
Public method Static Supported by the .NET Compact Framework GetIUnknownForObject 从托管对象返回一个 IUnknown 接口。
Public method Static GetIUnknownForObjectInContext 如果调用方与托管对象在同一上下文中,则从该对象返回一个 IUnknown 接口。
Public method Static Supported by the .NET Compact Framework GetLastWin32Error 返回由上一个非托管函数返回的错误代码,该函数是使用设置了 DllImportAttribute.SetLastError 标志的平台调用来调用的。
Public method Static GetManagedThunkForUnmanagedMethodPtr 获取指向 thunk 的指针,该 thunk 封送从托管代码到非托管代码的调用。
Public method Static GetMethodInfoForComSlot 检索指定的虚函数表 (VTBL) 槽的 MethodInfo
Public method Static Supported by the .NET Compact Framework GetNativeVariantForObject 将对象转换为 COM VARIANT。
Public method Static Supported by the .NET Compact Framework GetObjectForIUnknown 返回通过指向 COM 对象的 IUnknown 接口的指针表示该对象的类型实例。
Public method Static Supported by the .NET Compact Framework GetObjectForNativeVariant 将 COM VARIANT 转换为对象。
Public method Static GetObjectsForNativeVariants 将 COM VARIANT 数组转换为对象数组。
Public method Static GetStartComSlot 获取虚函数表 (VTBL) 中第一个包含用户定义的方法的槽。
Public method Static GetThreadFromFiberCookie 将纤程 Cookie 转换为相应的 System.Threading.Thread 实例。
Public method Supported by the .NET Compact Framework GetType  获取当前实例的 Type。 (从 Object 继承。)
Public method Static Supported by the .NET Compact Framework GetTypedObjectForIUnknown 返回表示 COM 对象的指定类型的托管对象。
Public method Static GetTypeForITypeInfo ITypeInfo 转换为托管 Type 对象。
Public method Static GetTypeInfoName 已重载。 检索由 ITypeInfo 表示的类型的名称。
Public method Static GetTypeLibGuid 已重载。 检索类型库的库标识符 (LIBID)。
Public method Static GetTypeLibGuidForAssembly 检索从指定程序集导出类型库时分配给该类型库的库标识符 (LIBID)。
Public method Static GetTypeLibLcid 已重载。 检索类型库的 LCID。
Public method Static GetTypeLibName 已重载。 检索类型库的名称。
Public method Static GetTypeLibVersionForAssembly 检索将从指定程序集导出的类型库的版本号。
Public method Static GetUniqueObjectForIUnknown 为给定的 IUnknown 创建唯一的运行库可调用包装 (RCW) 对象。
Public method Static GetUnmanagedThunkForManagedMethodPtr 获取指向 thunk 的指针,该 thunk 封送从非托管代码到托管代码的调用。
Public method Static Supported by the .NET Compact Framework IsComObject 指示指定对象是否表示 COM 对象。
Public method Static Supported by the .NET Compact Framework IsTypeVisibleFromCom 指示类型对 COM 客户端是否可见。
Public method Static NumParamBytes 计算在非托管内存中保存指定方法的参数所需要的字节数。
Public method Static OffsetOf 返回托管类的非托管形式的字段偏移量。
Public method Static Supported by the .NET Compact Framework Prelink 在不调用方法的情况下执行一次性方法设置任务。
Public method Static Supported by the .NET Compact Framework PrelinkAll 对类上的所有方法执行预链接检查。
Public method Static PtrToStringAnsi 已重载。 分配托管 String 并向其复制所有或部分非托管 ANSI 字符串。
Public method Static PtrToStringAuto 已重载。 分配托管 String,并从非托管字符串向其复制指定数目的字符。
Public method Static Supported by the .NET Compact Framework PtrToStringBSTR 分配托管 String,并向其复制存储在非托管内存中的 BSTR 字符串。
Public method Static Supported by the .NET Compact Framework PtrToStringUni 已重载。 分配托管 String,并从非托管 Unicode 字符串向其复制指定数目的字符。
Public method Static Supported by the .NET Compact Framework PtrToStructure 已重载。 将数据从非托管内存块封送到托管对象。
Public method Static Supported by the .NET Compact Framework QueryInterface 从 COM 对象请求指向指定接口的指针。
Public method Static Supported by the .NET Compact Framework ReadByte 已重载。 从非托管指针读取单个字节。
Public method Static Supported by the .NET Compact Framework ReadInt16 已重载。 从非托管内存中读取一个 16 位有符号整数。
Public method Static Supported by the .NET Compact Framework ReadInt32 已重载。 从非托管内存中读取一个 32 位有符号整数。
Public method Static Supported by the .NET Compact Framework ReadInt64 已重载。 从非托管内存中读取一个 64 位有符号整数。
Public method Static Supported by the .NET Compact Framework ReadIntPtr 已重载。 从非托管内存中读取处理器本机大小的整数。
Public method Static Supported by the .NET Compact Framework ReAllocCoTaskMem 调整以前用 AllocCoTaskMem 分配的内存块的大小。
Public method Static ReAllocHGlobal 调整以前用 AllocHGlobal 分配的内存块的大小。
Public method Static Supported by the .NET Compact Framework ReferenceEquals  确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。)
Public method Static Supported by the .NET Compact Framework Release 递减指定接口上的引用计数。
Public method Static Supported by the .NET Compact Framework ReleaseComObject 递减所提供的运行库可调用包装的引用计数。
Public method Static ReleaseThreadCache 释放线程缓存。
Public method Static SecureStringToBSTR 分配 BSTR 并向其复制托管 SecureString 对象的内容。
Public method Static SecureStringToCoTaskMemAnsi 将托管 SecureString 对象的内容复制到从非托管 COM 任务分配器分配的内存块。
Public method Static SecureStringToCoTaskMemUnicode 将托管 SecureString 对象的内容复制到从非托管 COM 任务分配器分配的内存块。
Public method Static SecureStringToGlobalAllocAnsi 将托管 SecureString 中的内容复制到非托管内存,并在复制时转换为 ANSI 格式。
Public method Static SecureStringToGlobalAllocUnicode 向非托管内存复制托管 SecureString 的内容。
Public method Static SetComObjectData 设置由指定 COM 对象中的指定键引用的数据。
Public method Static Supported by the .NET Compact Framework SizeOf 已重载。 使用 Marshal 返回类的非托管大小(以字节为单位)。
Public method Static Supported by the .NET Compact Framework StringToBSTR 分配 BSTR 并向其复制托管 String 的内容。
Public method Static StringToCoTaskMemAnsi 将托管 String 的内容复制到从非托管 COM 任务分配器分配的内存块。
Public method Static StringToCoTaskMemAuto 将托管 String 的内容复制到从非托管 COM 任务分配器分配的内存块。
Public method Static StringToCoTaskMemUni 将托管 String 的内容复制到从非托管 COM 任务分配器分配的内存块。
Public method Static StringToHGlobalAnsi 将托管 String 中的内容复制到非托管内存,并在复制时转换为 ANSI 格式。
Public method Static StringToHGlobalAuto 向非托管内存复制托管 String 的内容,并在需要时转换为 ANSI 格式。
Public method Static StringToHGlobalUni 向非托管内存复制托管 String 的内容。
Public method Static Supported by the .NET Compact Framework StructureToPtr 将数据从托管对象封送到非托管内存块。
Public method Static Supported by the .NET Compact Framework ThrowExceptionForHR 已重载。 用特定的失败 HRESULT 值引发异常。
Public method Supported by the .NET Compact Framework ToString  返回表示当前 ObjectString。 (从 Object 继承。)
Public method Static UnsafeAddrOfPinnedArrayElement 获取指定数组中指定索引处的元素的地址。
Public method Static Supported by the .NET Compact Framework WriteByte 已重载。 将单个字节值写入到非托管内存。
Public method Static Supported by the .NET Compact Framework WriteInt16 已重载。 将 16 位有符号整数写入非托管内存。
Public method Static Supported by the .NET Compact Framework WriteInt32 已重载。 将 32 位有符号整数写入非托管内存。
Public method Static WriteInt64 已重载。 将 64 位有符号整数写入非托管内存。
Public method Static Supported by the .NET Compact Framework WriteIntPtr 已重载。 将一个处理器本机大小的整数值写入非托管内存。
Public method Static ZeroFreeBSTR 释放 BSTR 指针,该指针是使用 SecureStringToBSTR 方法分配的。
Public method Static ZeroFreeCoTaskMemAnsi 释放非托管字符串指针,该指针是使用 SecureStringToCoTaskMemAnsi 方法分配的。
Public method Static ZeroFreeCoTaskMemUnicode 释放非托管字符串指针,该指针是使用 SecureStringToCoTaskMemUnicode 方法分配的。
Public method Static ZeroFreeGlobalAllocAnsi 释放非托管字符串指针,该指针是使用 SecureStringToGlobalAllocAnsi 方法分配的。
Public method Static ZeroFreeGlobalAllocUnicode 释放非托管字符串指针,该指针是使用 SecureStringToCoTaskMemUnicode 方法分配的。

页首

请参见

参考

Marshal 类
System.Runtime.InteropServices 命名空间