向 IUnknown::QueryInterface() 传递了一个 void** 参数,该参数表示将检索到的接口放置在哪里的地址。
STDMETHOD QueryInterface(/* [in] */ REFIID riid, /* [iid_is][out] */ void** ppvObject)
QueryInterface() 的实现应该检查这个指针是否为空(然后立即返回 E_POINTER)还是只写在那里?
我见过很多与 COM 相关的代码,几乎所有地方都没有进行检查。假设有人当然可以将空指针作为这个参数传递,但真的需要这样的检查吗?