连续的接口功能ID

chr*_*zke 5 windows com midl

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

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

ID需要连续吗?或者我可以定义它

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

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

Igo*_*nik 3

实际的 id 值是任意数字。它们不必是连续的;它们必须是独一无二的。按照惯例,零和负值是为某些特殊方法保留的。除此之外,没有任何规则。