/protocol switch
/protocol 开关指定生成的存根支持哪个线路协议。
midl /protocol (dce | ndr64 | all)
-
Dce
-
生成的存根仅支持 DCE 协议。
-
ndr64
-
生成的存根仅支持 Microsoft NDR64 协议。
-
所有
-
生成的存根支持给定环境的所有可用协议。
RPC 根据严格的网络协议(也称为传输语法)对数据进行封送和解封处理,该协议定义数据线表示形式,例如数据成员的封送顺序、网络上数据的对齐方式、数据附带的其他信息等。 Microsoft RPC 与 OSF DCE 的 NDR (网络数据表示) 协议兼容。 在 64 位版本的 Windows XP 中,Microsoft 引入了针对传输 64 位数据的实验性协议 NDR64。 NDR64 不向后兼容 DCE 协议。
dce 协议与 OSF DCE 的 NDR 传输语法兼容。 此协议已针对传输 32 位数据进行优化。
目前仅当与 / win64 开关一起使用时才支持 ndr64 协议。 如果仅限 ndr64 的客户端尝试连接到仅 dce 服务器,反之亦然,则会拒绝调用并RPC_S_UNSUPPORTED_TRANS_SYN。
all 选项创建可以使用任何可用协议的存根。 对于 32 位存根,当前唯一可用的协议是 DCE。 对于使用 /win64 开关创建的 64 位存根,DCE 和 NDR64 都可用。
midl /protocol all /win64 filename.idl