连续的接口功能ID

时间:2014-08-01 09:04:22

标签: windows com midl

我在midl中有一个COM对象接口,如

interface InterfaceName : IDispatch
{
  [id(1)] HRESULT FunA(...);
  [id(2)] HRESULT FunB(...);
  [id(3)] HRESULT FunC(...);
}

ids是否需要连续?或者我可以将其定义为

interface InterfaceName : IDispatch
{
  [id(1)] HRESULT FunA(...);
  [id(3)] HRESULT FunB(...);
  [id(5)] HRESULT FunC(...);
}

编译第二个版本似乎没问题,但是在运行时会出现任何问题吗?

1 个答案:

答案 0 :(得分:3)

实际ID值是任意数字。它们不必是连续的;他们必须是独一无二的。按惯例,零和负值是reserved for certain special methods。除此之外,没有规则。