使用 MIDL
使用 RPC 的程序的所有接口都必须使用 Microsoft 接口定义语言 (MIDL) 定义,并使用 MIDL 编译器进行编译。 以下主题简要概述了如何创建和编译 MIDL 接口:
有关这些主题的详细讨论,请参阅 IDL 和 ACF 文件。
使用 MIDL 定义接口
MIDL 文件是可以使用文本编辑器创建和编辑的文本文件。 如果为接口生成 UUID,通常会将输出存储在模板 MIDL 文件中。 有关 UUID 的详细信息,请参阅 生成接口 UUID。
MIDL 中的所有接口都采用相同的格式。 它们以标头开头,其中包含接口属性列表和接口名称。 属性括在方括号中。 接口标头后跟其正文,它用大括号括起来。 以下示例中显示了一个简单的接口:
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0)
]
interface MyInterface
{
const unsigned short INT_ARRAY_LEN = 100;
void MyRemoteProc(
[in] int param1,
[out] int outArray[INT_ARRAY_LEN]
);
}
通常出现在 MIDL 接口定义中的一些属性是 UUID 和接口版本号。 接口定义的主体必须包含接口中所有远程过程的过程声明。 它还可以包含接口所需的数据类型和常量声明。
远程过程声明中的所有参数都必须声明为 [in]、[out]或 [in, out]。 这些声明指定客户端程序将数据传递到远程过程和/或从远程过程获取数据。 有关接口参数声明的更多详细信息,请参阅 IDL 接口正文。
编译 MIDL 文件
MIDL 编译器是随平台软件开发工具包 (SDK) 自动安装的命令行工具。 通过在命令行中键入 midl 命令(后跟 MIDL 文件的名称)在命令窗口中调用它。 确保包含 MIDL 编译器的目录位于路径中。 以下示例演示了它的用法:
midl MyApp.idl
请注意,如果文件名具有 .idl 扩展名,则不必包含 扩展名。 还可以通过在 midl 命令和文件名之间插入来使用 MIDL 编译器命令行开关。 以下示例对此进行了演示:
midl /acf MyApp.acf MyApp.idl
在此示例中,使用 MyApp.idl 文件作为输入文件执行 MIDL 编译器。 命令行开关 /acf 指示编译器使用应用程序配置文件 (ACF) 进行输入。 IDL 和 ACF 文件中更全面地讨论了应用程序配置文件。
有关使用 MIDL 编译器的更多详细信息,请参阅 Microsoft Interface Definition Language (MIDL) ,其中包含有关以下主题的信息: