COM オブジェクトへの C を使用したアクセス

C++ は COM プログラミングで最もよく使用される言語ですが、C を使用して COM オブジェクトにアクセスすることもできます。これは比較的単純に行えますが、やや複雑な構文が必要になります。

  • すべてのメソッドにおいて、パラメーター リストの先頭にさらにパラメーターが追加されます。このパラメーターを、インターフェイス ポインターに設定する必要があります。
  • 明示的に、オブジェクトの vtable を参照する必要があります。

すべての COM オブジェクトには vtable があります。これには、オブジェクトで公開されているメソッドへのポインターのリストが含まれています。インターフェイス ポインターは、vtable 内の適切な位置を指します。ここには、呼び出している特定のメソッドへのポインターが順番に含まれています。vtable は、基本的に C++ では非表示になっているため、このドキュメントの他の場所では説明されていません。ただし、C で COM メソッドを呼び出す場合は、明示的に vtable を参照する、さらにもう 1 段階の間接参照を含める必要があります。

一部のコンポーネントでは、ヘッダー ファイルでマクロが定義されています。それらは、正しい呼び出し規則を解決します。詳細については、「マクロによる DirectX COM メソッドの呼び出し」を参照してください。