Marshal 类的内存操作的一般功能

Marshal类

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

命名空间:System.Runtime.InteropServices

 

Marshal 类中定义的 static 方法对于处理非托管代码至关重要。此类中定义的大多数方法通常由需要在托管和非托管编程模型之间提供桥梁的开发人员使用。

例如,StringToHGlobalAnsi 方法将 ANSI 字符从指定的字符串(在托管堆中)复制到非托管堆中的缓冲区。该方法还分配大小正确的目标堆。

 

  公共方法

<

方法名称

说明

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  

检索标识所发生异常的类型的代码。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值