CoCreateInstance - 反过来是什么?

CoCreateInstance - What is the reverse?

使用 COM,您使用 CoCreateInstance 创建对象。

有没有办法完全破坏它,以便单元测试的下一部分可以重新开始?

每个持有引用的 COM 接口指针的人都可以保证该对象是存活的,因此如果不知道每个持有指向您的 COM 对象的接口指针的人,并且能够请求释放您就无法确保该对象已被销毁。

你当然可以试试

for(; ; )
{
  if(pFoo->Release() == 0)
    break;
}

然而,即使这样你 (a) 可能会陷入死循环,(b) 那些引用你的对象的人将获得访问 violation/undefined 行为,一旦他们试图访问被销毁的对象(他们仍然希望被引用的对象是还活着)。

另一种方法是使用包装器对象并在内部管理真正的 COM 对象而不公开它。然后您将方法调用从包装器转发到内部对象。然后你可以要求你的包装器释放内部引用,这通常会导致内部对象的破坏。