IDL
来源:互联网 发布:mac能玩什么游戏 编辑:程序博客网 时间:2024/06/02 15:54
IDL是接口定义语言。
MIDL是Microsoft的IDL编译器。
在用IDL对接口和组件进行了描述后,可以用MIDL进行编译,生成相应的代理和存根DLL的C代码。
一个例子:
imp
///Interface IX
[ ///注意是[ ]不是 {}
object, ///所定义的接口是一个COM接口
uuid(32bb8323-b41b-11cf-a6bb-0080c7b2d682), ///相应的接口IID
helpstring(“IX Interface”), ///将帮助串放入类型库
pointer_default(unique) ///这类指针可以为空,函数内可以修改它们的值,但不能指定别名
]
interface IX:IUnknown
{
///in关键字告诉MIDL需要将此参数值从客户传递给组件,存根代码不需要送回任何值。
HRESULT FxStringIn([in,string]wchar_t* szIn);
///out关键字告诉MIDL参数仅被用来从组件向客户传回有关的数据,
///代理不需要对输出参数进行列集,也不需要将参数传给组件。
HRESULT FxStringOut([out,string]wchar_t* szout);
///COM对字符串的标准约定是Unicode字符(即wchar_t)
}
IDL文件可以定义C和C++风格的结构,并可用它们作为函数的参数。
当IDL文件中有一个library时,MIDL将生成一个类型库。
MIDL为接口生成相应的代理和存根的C代码。
为得到一个代理/存根DLL,需要编译和链接MIDL生成的C文件。
宏REGISTER_PROXY_DLL将完成代理/存根DLL在注册表中的注册操作。
有了IDL和MIDL我们就可以象调用进程内组件那样进行跨进程边界的函数调用,并对参数进行列集。
Question:
什么是代理和存根DLL?
Answer:
客户与一个模仿组件的DLL进行通信,这个DLL可以完成参数的列集,此组件被称为代理。
一个代理就是同另一个组件行为相同的组件。
代理必须是DLL形式。
组件还需要一个存根的DLL,以便对从客户传来的数据进行散集。
存根也将对传回给客户的数据进行列集。
- IDL
- IDL
- IDL
- IDL
- OPCCOMN.IDL
- IDL是什么?
- 什么是IDL
- IDL语法
- .IDL文件
- IDL是什么?
- IDL字体
- IDL字体
- IDL文件
- IDL文件
- IDL详解
- IDL初识
- IDL入门
- IDL规范
- 成为一名优秀的测试员,你需要做到以下10点
- 树状数组求逆序数
- 用js/JQuery获取/设置元素属性
- Scrollview中listview显示不全的解决办法
- C++传值,传址,引用的区别
- IDL
- boa搭建
- JS【判断输入表单是否为空、两次输入密码是否相同】
- 阿里笔试题(二)——正则表达式
- enum与typedef enum的用法
- ios--UITabBarController和UINavigation的集成
- javaScript 正则表达式总结
- 斜杠
- 制作脚本的过程堪称坑爹