COM - 返回一个对象接口数组

时间:2011-09-08 12:28:21

标签: com idl

我想从IDL返回一个接口数组。 我试试这个:

interface ISecurityPolicy : IDispatch{
[id(6)]          HRESULT GetPolicyList([out, ref, retval] SAFEARRAY(IEntityPolicy*)* result);
}

我收到此警告(在VS 2010中): 警告1警告MIDL2456:SAFEARRAY(接口指针)使用midl生成的代理不起作用:[过程'GetPolicyList'的参数'结果'(接口'ISecurityPolicy')]

这是http://social.msdn.microsoft.com/Forums/en-US/vcmfcatl/thread/84a632a9-4e29-4a95-8da7-f7aedb650339可能暗示的虚假警告吗?

1 个答案:

答案 0 :(得分:2)

将此声明为:

interface ISecurityPolicy : IDispatch{
[id(6)]          HRESULT GetPolicyList([out, ref, retval] SAFEARRAY(IUnknown*)* result);
}

为实现接口简化了一些事情。 它可能仍然是一个更好的主意,但不是将一个接口数组返回给调用者,而是通过“集合”返回迭代器。