IUnknown::QueryInterface() には、取得したインターフェースを置くアドレスを示す void** パラメータが渡されます。
STDMETHOD QueryInterface(/* [in] */ REFIID riid, /* [iid_is][out] */ void** ppvObject)
QueryInterface() の実装は、このポインターが null であることを確認する (そしてすぐに E_POINTER を返す) べきか、それとも単にそこに書き込むべきか?
COM 関連のコードをたくさん見てきましたが、ほとんどどこでもチェックが実行されていません。仮説的には、もちろん誰かがこのパラメーターとして null ポインターを渡すことができますが、そのようなチェックは本当に必要ですか?