C# 互操作性入门系列(一):C#中互操作性介绍C# 互操作性入门系列(二):使用平台调用调用Win32 函数C# 互操作性入门系列(三):平台调用中的数据封送处理C# 互操作性入门系列(四):在C#中调用COM组件 MSDN介绍: 互操作性 与非托管代码交互操作 与非托管代码交互操作帮助主题 向 .NET Framework 公开 COM 组件 将类型库当作程序集导入 如何:添加对类型库的引用 如何:从类型库生成互操作程序集 用于向互操作程序集导入类型库的特性 应用自定义特性实现 IEnumerable 应用自定义特性以覆盖默认 COM DISPID 应用自定义特性来标记 COM Get/Set 属性 在托管代码中使用 COM 类型 检查 COM 类型的程序集 激活 COM 对象 调用方法、属性和事件 编译互操作项目 部署互操作应用程序 COM 互操作示例:.NET 客户端和 COM 服务器 向 COM 公开 .NET Framework 组件 为互操作限定 .NET 类型 应用互操作特性 将 COM 的程序集打包 如何:将类型库作为 Win32 资源嵌入应用程序 向 COM 注册程序集 如何:从 COM 中引用 .NET 类型 调用 .NET 对象 为 COM 访问部署应用程序 COM 互操作示例:COM 客户端和 .NET 服务器 使用非托管 DLL 函数 平台调用详解 标识 DLL 中的函数 创建用于容纳 DLL 函数的类 在托管代码中创建原型 指定入口点 指定字符集 平台调用示例 平台调用安全注意事项 调用 DLL 函数 传递结构 回调函数 如何:实现回调函数 互操作的设计注意事项 为交互操作生成 COM 组件 为交互操作生成 .NET Framework 组件 互操作封送处理 默认封送处理行为 使用互操作封送拆收器进行内存管理 方向特性 可直接复制到本机结构中的类型和非直接复制到本机结构中的类型 复制和锁定 数组的默认封送处理 布尔类型的默认封送处理 字符的默认封送处理 类的默认封送处理 委托的默认封送处理 对象的默认封送处理 字符串的默认封送处理 值类型的默认封送处理 用平台调用封送数据 平台调用数据类型 PinvokeLib.dll 封送处理字符串 “缓冲区”示例 MsgBox 示例 OpenFileDlg 示例 OSInfo 示例 “字符串”示例 封送类、结构和联合 FindFile 示例 OutArrayOfStructs 示例 结构示例 SysTime 示例 “联合”示例 封送类型数组 封送处理不同类型的数组 其他封送处理示例 ActiveDir 示例 “回调”示例 GCHandle 示例 HandleRef 示例 Void 示例 用 COM 互操作对数据进行封送处理 COM 数据类型 自定义 COM 可调用包装 自定义运行时可调用包装 如何:编辑互操作程序集 封送处理更改 如何:手动创建包装 如何:映射 HRESULT 和异常 使用泛型类型进行交互操作 高级 COM 互操作性 高级 COM 互操作性帮助主题 COM 包装 运行时可调用包装 封送选定接口 COM 可调用包装 模拟 COM 接口 类接口简介 自定义标准包装 如何:创建 COM 包装 如何:自定义运行时可调用包装 类型等效性和嵌入的互操作类型 主互操作程序集 产生主互操作程序集 命名主互操作程序集 生成主互操作程序集 如何:使用 Tlbimp.exe 生成主互操作程序集 如何:包装类型库的多个版本 如何:手动创建主互操作程序集 自定义主互操作程序集 向开发人员分发主互操作程序集 用主互操作程序集编程 定位主互操作程序集 如何:注册主互操作程序集 重新分发主互操作程序集 COM 互操作的并行执行 从 COM 应用程序进行的运行时初始化 与版本相关的注册表项 配置 COM 应用程序并行执行 应用与版本相关的特性 COM 组件和并行执行 免注册 COM 互操作 免注册 COM 互操作的要求 配置 COM 组件免注册激活 如何:配置基于 .NET Framework 的 COM 组件以进行免注册激活 安全句柄和紧急终结 继承、聚合与包容 托管和非托管线程处理 托管和非托管事件 COM 事件 如何:处理 COM 源引发的事件 如何:引发 COM 接收器所处理的事件 有关从类型库转换到程序集的摘要 导入库转换 导入模块转换 导入类型转换 导入成员转换 导入参数转换 有关从程序集转换到类型库的摘要 导出程序集转换 导出模块转换 导出类型转换 导出成员转换 导出参数转换 自定义封送处理 定义封送处理类型 实现 ICustomMarshaler 接口 使用替换封送拆收器 包装委托和非托管函数指针