2011-10-18 11 views
1

QueueUserWorkItemを使用して、NTスレッドプールに従属する一連の作業があります。 WMI内のデータにアクセスするために、これらの個別のスレッドからCOMへの呼び出しをいくつか行う必要があります。しかし、私は確信しています、どのようにCoInitializeExへの正しい呼び出しを行う必要があります。NTのQueueUserWorkItemで作成されたワーカースレッドからCOMにどのように呼び出されますか?

基本的に、CoInitializeEx文書では、コールはスレッドごとに1回行う必要があります。しかし、私はこれらのスレッドを所有していません.NTはそうしています。彼らがいつ創造されたのか、破壊されたのか、その性質のものはわかりません。私は基本的に::CoInitializeEx()COINIT_MULTITHREADEDと)をスレッドルーチンの最初に呼び出し、次に::CoUninitialize()をスレッドルーチンの最後に呼び出しますか?

答えて

1

CoInitCoUninitは複数のネストされた時刻にコールすることができます。あなたのスレッドprocの始めと終わりにそれを行う提案されたソリューションは合理的です。 CoUninitコールをスキップする初期の出口がないことを確認し、CoInitが失敗した場合はCoUninitに電話をかけないでください。

関連する問題