Quantcast
Channel: イグトランスの頭の中
Viewing all articles
Browse latest Browse all 123

スレッド初期化・終了関数のまとめ

$
0
0

本記事は、COM Advent Calendar 2014 – Qiitaの2日目の記事です。


COMを使用するスレッドでは、CoInitializeEx/CoUninitializeなどを呼ばなければならないのはご存じと思います。実は結構種類があるので、その一覧をまとめてみようと思い立ちました。

CoInitialize, CoInitializeEx / CoUninitialize
通常のCOM初期化・終了処理。CoInitializeは、CoInitializeExにCOINIT_APARTMENTTHREADEDを指定するのと同じ。
OleInitialize / OleUninitialize
STAスレッドとして初期化し、OLE用の追加処理を行う。
RoInitialize / RoUninitialize
Windows Runtime用の初期化を行う。現在のところMTA (RO_INIT_MULTITHREADED)しか指定できない。おそらくCoInitializeEx系の上位互換と思われる。Windows 8で追加された。

Windows 95でCoInitializeExを使うにはDCOM for Windows 95をインストールする必要がある、なんてことはもう過去の話ですね。


スレッドをどの種類のアパートメントに入らせることが可能かという分類で表にしてみます。

関数STAMTA
CoInitializeEx系
OleInitialize系×
RoInitialize系×

Windows 8のWinRT APIで増えたASTAもあるのですが、ここに載せていません。RoInitializeやその他公開されている情報の限りでは、ASTA所属のスレッドは自分で作れないためです。


昨日と合わせて初期化関数の話を2つしたので、終了関数の話も2つしなければいけないのかなとちょっと思っています。

スレッド初期化・終了関数のまとめ is a post from: イグトランスの頭の中(のかけら)


Viewing all articles
Browse latest Browse all 123

Trending Articles