COM インターフェイスのエントリ ポイント

COM インターフェイスのメンバー関数の場合は、エクスポートされたインターフェイスのメソッドを呼び出すときに METHOD_PROLOGUE マクロを使用して、適切なグローバル状態を維持します。

通常、CCmdTarget 派生オブジェクトによって実装されたインターフェイスのメンバー関数は、このマクロを使用して pThis ポインターを自動的に初期化します。 次に例を示します。

STDMETHODIMP_(ULONG) CMySink::XSinky::AddRef()
{
   METHOD_PROLOGUE(CMySink, Sinky);
   return pThis->InternalAddRef();
}

詳細については、MFC/OLE IUnknown実装に関するテクニカル ノート 38 を参照してください。

METHOD_PROLOGUE マクロは次のように定義されます:

#define METHOD_PROLOGUE(theClass, localClass) \
    theClass* pThis = \
    ((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
    AFX_MANAGE_STATE(pThis->m_pModuleState) \

グローバル状態の管理に関係するマクロの部分は次のとおりです:

AFX_MANAGE_STATE( pThis->m_pModuleState )

この式では、m_pModuleState は、含んでいるオブジェクトのメンバー変数であるとみなされます。 これは CCmdTarget 基底クラスによって実装され、オブジェクトがインスタンス化されるときに、COleObjectFactory によって適切な値に初期化されます。

関連項目

MFC モジュールの状態データの管理