@egtraイグトランスの頭の中(のかけら)ActiveBasicを中心にプログラミングの話をぼちぼちと。Qiitaの4日目の記事です。ISequentialStreamをQueryInterfaceするこんな関数を作ったことがあります。}まずISequentialStreamでQueryInterfaceして、うまくいけばそれを返し、ダメならIStreamでQueryInterfaceしてみるという関数です。ISequentialStreamではE_NOINTERFACEを返すくせに、その派生であるIStreamについてはQueryInterfaceできるというオブジェクトが存在するようなのです。幸いにして、まだそういう実装に遭遇したことはありません。ISequentialStreamはあとから追加された痕跡があるので、仕方がない面もあると言えます。IStreamは{0000000C-0000-0000-C000-000000000046}なのに対し、ISequentialStreamは{0C733A30-2A1C-11CE-ADE5-00AA0044773D}だからです。大昔から存在するインタフェースのIIDは、みな{xxxxxxxx-0000-0000-C000-000000000046}ですが、ISequentialStreamのIIDはそうではありません。IUnknown_GetWindow関数にも同様の苦労が見られます。Remarksに、IOleWindowでQueryInterfaceできないものがあるから、そこから派生しているIShellViewでのQueryInterfaceも試してみる旨が記載されています。逆の立場で、COMオブジェクトを実装するときには、派生元のインタフェースでのQueryInterfaceにも答えてあげることを忘れないようにしましょう、ということでもあります。コメントをキャンセルメールアドレスが公開されることはありません。WPThemes.Info。