COM - 返回对象接口数组

Ghi*_*ita 5 com idl

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

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

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

这是一个虚假警告,正如http://social.msdn.microsoft.com/Forums/en-US/vcmfcatl/thread/84a632a9-4e29-4a95-8da7-f7aedb650339可能建议的那样?

Ghi*_*ita 2

将此声明为:

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

稍微简化了接口的实现。尽管不是向调用者返回一个接口数组来返回“集合”上的迭代器,但这仍然可能是一个更好的主意。