で始まるシングルスレッドプログラムがあります
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)
Windows XP の COINIT_MULTITHREADED では一部の関数 (URLDownloadToFile など) が正しく動作しなかったため、COINIT_APARTMENTTHREADED を使用します。
そして今、CreateTimerQueueTimer からのコールバック関数の奇妙な動作を調査しています - COM オブジェクトが作成されませんでした。
それで、タイマー コールバック関数で COM の初期化を行う必要がありますか、それともコードで何かを逃しただけですか?
更新:コードを単純化しただけで、タイマー コールバックの前に CoInitializeEx を呼び出したことは確かですが、2 番目のタイマー コールバックでは呼び出していないように見えます