Win32/Desktop Technologies/System Services/MIDL文档阅读。
Interface Definitions and Type Libraries
Interfaces in Distributed Objects
在分布式计算中,接口是一个合集,其中包含定义和远端函数,可以运行不同情境下的程序进行互操作。
在一个RPC应用中,一个接口指定
- 客户和服务端程序如何标识自身
- 两者之间的数据如何传输
- 客户端可以调用的远端执行诀
- 远端执行诀的参数和返回值的数据类型
微软的IDL可用于在此风不是计算中描述接口。每个接口像是一个客户端和服务端之间的合约。基于RPC、COM、DCOM的应用程序使用MIDL规制他们的接口。
参考https://docs.microsoft.com/en-us/windows/desktop/Rpc/developing-the-interface
COM, DCOM, and Type Libraries
对于COM和DCOM,都是用RPC来在组件例现之间交互。DCOM的话,可以跨机器交互。
类型库(.tlb)是二进制格式文件,存储COM或者DCOM对象的辖属和方法,形式上可以供其他应用在运行时访问。
COM/DCOM运行时环境可以使用tlb来提供自动化的接口对标(marshaling),可以跨隔间、进程以及机器。
接口特征可以用一个IDL文件,额外加上一个可选的ACF文件(application configuration file)。ACF指定注入binding handles之类的借口特征,还可以指定如何以机器无关的方式,对标和传输一个复杂的数据结构。
IDL和ACF使用的都是MIDL格式。
根据IDL的内容,MIDL工具会生成如下文件
- C语言的prox/stub文件,一个接口标识符文,一个DLL数据文件,和一个相关的头文件。参考https://docs.microsoft.com/en-us/windows/win32/midl/files-generated-for-a-com-interface
- 一个编译后的tlb,以及相关的头文件。MIDL在IDL中看见
library
语句的时候会生成。参考https://docs.microsoft.com/en-us/previous-versions/windows/desktop/automat/contents-of-a-type-library - C/C++语言的客户端以及服务端stub文件,及相关的头文件,用于RPC接口。这些文件会在某些接口没有object属性的时候生成。参考https://docs.microsoft.com/en-us/windows/desktop/Rpc/general-build-procedure以及https://docs.microsoft.com/en-us/windows/win32/midl/files-generated-for-an-rpc-interface
Interface Definition (IDL) File
接口用interface
关键字标识。
每个接口包含头部和正文。头部包含应用于正文的属性,正文包含余下的接口定义。查看https://docs.microsoft.com/en-us/windows/desktop/Rpc/the-interface-definition-language-idl-file。