CoCreateInstance() を呼び出す必要がある DLL があります。Dllmain() で、関数 do_stuff() を実行する新しいスレッドを作成しました。以下に示すように、CoCreateInstance() は do_stuff() で呼び出されます。
BOOL WINAPI DllMain(HMODULE hModule, DWORD fdwReason, LPVOID lpvReserved) {
...
switch(fdwReason) {
case DLL_PROCESS_ATTACH:
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)do_stuff, NULL, 0, NULL);
...
break;
...
}
...
return TRUE;
}
DWORD WINAPI do_stuff(void) {
...
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (SUCCEEDED(hr)) {
hr = CoCreateInstance(rclsid, NULL, CLSCTX_LOCAL_SERVER, riid, ppv);
...
ただし、CoCreateInstance() がハングし、戻りません。MULTITHREADED オプションも使用してみましたが、役に立ちませんでした。フィードバックやアイデアは大歓迎です。