看看CoCreateInstance这个函数,它的实现是这样的
HRESULT hr = CoGetClassObject(CLSID_InsideCOM, CLSCTX_INPROC_SERVER, NULL, IID_IClassFactory, (void**)&pClasFactory);
if(SUCCEEDED(hr))
{
hr = pClassFactory->CreateInstance(NULL, IID_IUnknown, (void **)&pUnknown);
if(SUCCEEDED(hr)) pClassFactory->Release();
}
当类厂创建对象成功以后,它就马上释放了,典型的被人家过河拆桥,呵呵。
HRESULT hr = CoGetClassObject(CLSID_InsideCOM, CLSCTX_INPROC_SERVER, NULL, IID_IClassFactory, (void**)&pClasFactory);
if(SUCCEEDED(hr))
{
hr = pClassFactory->CreateInstance(NULL, IID_IUnknown, (void **)&pUnknown);
if(SUCCEEDED(hr)) pClassFactory->Release();
}
当类厂创建对象成功以后,它就马上释放了,典型的被人家过河拆桥,呵呵。
DllCanUnloadNow的代码中可以看出这一点.
它不关注类厂对象的存在.