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