おはよう。COM参照カウントは常に2です
私は最後の日にCOMで作業しましたが、インスタンスを作成すると、参照カウントは常に2になります。このトピックに関するいくつかの質問を読んで、頻繁に回答するとスレッドの内容が分かります。そこで、COMオブジェクトをプログラムの先頭に作成してからスレッドを作成し、作成直後に2にしました。私は全く使用しませんQueryInterface。すでに確立された参照カウントしてポインタを返す
hr = CoCreateInstance(CLSID_EventViewer, NULL, CLSCTX_LOCAL_SERVER,
IID_IEventViewer, (void**)&view);
int count = view->AddRef();
参照カウントはCOMでクライアントに認識されません。クライアントはAddRefとReleaseコール(など)と一致する必要があります。どこから2を取得していますか? –
AddRefからの戻り値としてこの値を取得しました.AddRefの戻り値が新しい参照カウントであるため、値1を期待していました。 – viceriel
実際には、AddRefの戻り値は信頼できず、テスト目的にのみ使用する必要があります。 –