64、.NET 中调用非托管代码:PInvoke 与数据封送

.NET 中调用非托管代码:PInvoke 与数据封送

1. 非托管代码存在的必要性

在编程领域,Microsoft .NET Framework 是一项重大变革,托管应用程序正逐渐成为 Microsoft Windows 软件套件中最常见的应用类型。然而,即使是 .NET Framework 的忠实拥护者,也不能合理地预期非托管代码会很快消失,主要有以下三个原因:
- 重写成本高 :将所有现有软件重写为托管代码的成本过高,而且作为托管应用程序运行所带来的优势不足以证明这种迁移成本的合理性。
- COM 组件依赖 :许多 Windows 程序员目前只能使用 COM 组件形式的服务,例如 Microsoft Office Word 或 Excel 的对象库。
- 功能未封装 :.NET Framework 涵盖了操作系统的许多功能,但并非全部。编写 shell 扩展、处理内存映射文件或进行进程间窗口子类化等 Windows 功能仍需要非托管代码,因为这些功能尚未封装在 .NET Framework 中。

为了在 .NET Framework 应用程序中利用非托管代码,Microsoft 提供了两种相关但不同的机制:Platform Invoke(简称 PInvoke)和 COM Interop。PInvoke 允许 .NET 代码调用“传统”的 DLL,如构成 Windows 内核的 DLL 或用 C 或 C++ 编写的 DLL;而 COM Interop 则允许在 .NET Framework 语言中重用 COM 组件,或从 COM 应用程序中调用 .NET

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值