开发接口

RPC 接口描述服务器程序实现的远程函数。 当客户端调用服务器提供的远程过程时,接口可确保客户端和服务器使用相同的规则进行通信。 接口由接口名称、某些属性、可选类型或常量定义以及一组过程声明组成。 每个过程声明都必须包含过程名称、返回类型和参数列表。

接口在 Microsoft 接口定义语言 (MIDL) 中定义。 如果你熟悉 C 或 C++,则 MIDL 接口定义看起来非常简单。 MIDL 在很多方面都类似于 C 和 C++。

开发 RPC 应用程序时,文本编辑器用于定义接口,并将其存储在扩展名为 .idl 的文本文件中。 有关详细信息,请参阅 IDL 和 ACF 文件。 MIDL 编译器生成一个头文件,程序将该文件包含在客户端和服务器源文件中。 MIDL 编译器还会生成两个 C 源文件。 编译其中一个程序并将其链接到客户端程序,另一个链接到服务器程序。 这两个 C 源文件是客户端和服务器存根。 有关客户端和服务器存根的概述,请参阅 RPC 工作原理。 有关 MIDL 编译器的概述,请参阅 编译 MIDL 文件

默认情况下,客户端和服务器存根具有相同的名称,如果客户端与服务器存根链接,则可能会导致问题,反之亦然。 使用 MIDL /prefix 选项可防止发生此常见错误。

下图显示了创建接口的过程。

使用 /prefix 选项创建客户端和服务器存根可防止意外编译问题

可能还需要指定应用程序配置文件 (ACF) ,以便输入到 MIDL 编译器。 有关应用程序配置文件的详细信息,请参阅 IDL 和 ACF 文件

除了 MIDL 编译器之外,通常还需要使用 Uuidgen 实用工具来生成 UUID (通用唯一标识符,可与术语 GUID) 互换。 本节介绍这两个工具的信息,分为以下主题: