COMのメモリレイアウトを理解するため、なるべく既存のマクロを使わないでC言語から呼び出してみました。
手軽にCOMのサンプルを作る方法が見当たらなかったので、以下の Project1.dll を使わせていただきました。
gistに掲載したサンプルは Project1.dll を直接読み込むためregsvr32による登録は不要です(regsrv32とtypoしてハマりました)。.NETになってからはCOMにtlbを公開する(CCW)のにmscoree.dllを経由するためregasmが必須になりました。VB6のように独立したCOM DLLを手軽に作る手段はないようです。
参考サイト
- やじやじ's 温COM知新 (今回Project1.dllを利用させていただいたサイト)
- 第1回 COM 再入門 〜 COM オブジェクトの基本的利用 (COM クライアントの実装) 〜 (温COM知新の著者による新連載)
- EternalWindows (COMの欄)
- COM プログラミング入門 - Web-DB プログラミング徹底解説
- COM総合研究所
- vtable | わき道プログラミング torch
- エクスプローラの重ね合わせアイコン - Entering Passive Mode
- WTL Index (PocketPCでのCOM)
- The Unofficial TypeLib Data Format Specification